From a413b5f1d0c4ff1ba8c5e82cb165dc7d89eeccc9 Mon Sep 17 00:00:00 2001 From: James Feng Cao Date: Tue, 9 May 2023 21:56:08 +0800 Subject: [PATCH] add bingAI draw --- en/filenames/index.html | 2 +- en/searchurl/bingAI/draw.html | 45 ++++++++++++ .../bingAI/js/module/generateImages.js | 72 +++++++++++++++++++ js/gissues.js | 4 +- 4 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 en/searchurl/bingAI/draw.html create mode 100644 en/searchurl/bingAI/js/module/generateImages.js diff --git a/en/filenames/index.html b/en/filenames/index.html index 7212500..1c234ce 100644 --- a/en/filenames/index.html +++ b/en/filenames/index.html @@ -102,7 +102,7 @@

Last Modified: 8 May 2023
-supports hosts
+add gissues


 

+ + diff --git a/en/searchurl/bingAI/js/module/generateImages.js b/en/searchurl/bingAI/js/module/generateImages.js new file mode 100644 index 0000000..5266ca4 --- /dev/null +++ b/en/searchurl/bingAI/js/module/generateImages.js @@ -0,0 +1,72 @@ + +const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay)) +/** + * @param text 生成图像的描述 + * @param requestId 请求id,如果不是对话生成图片可以为undefined + * @param countF 回调函数,获取当前是第几次请求。 + * @return [...{img:url,mImg:url}...] img:图片url mIng:缩略图url + * */ +export default async function generateImages(text,requestId,countF){ + let theUrls = new URLSearchParams(); + theUrls.append('re', '1'); + theUrls.append('showselective', '1'); + theUrls.append('sude', '1'); + theUrls.append('kseed', '7500'); + theUrls.append('SFX', '2'); + theUrls.append('q', text); + theUrls.append('iframeid', requestId); + let theUrl = `${window.location.origin}/images/create?${theUrls.toString()}`; + let response = await fetch(theUrl); + let html = (await response.text()); + let cookieID = response.headers.get('cookieID'); + + //如果返回的是有错误的页面 + let urr = new RegExp('class="gil_err_mt">([^<>]*)').exec(html); + if(urr && urr[1]){ + let error = `

${urr[1]}

`; + urr = new RegExp('class="gil_err_sbt">(([^<>]*<(a|div)[^<>]*>[^<>]*[^<>]*)*)').exec(html); + if(urr && urr[1]){ + error = error+`

${urr[1]}

`; + } + throw new Error(error); + } + + //如果没错误就匹配链接获取图片 + urr = new RegExp('"/(images/create/async/results/(\\S*))"').exec(html); + if(!urr || !urr[1]){ + console.log(html); + throw new Error("请求图片返回不正确的页面,无法加载图片。"); + } + let ur = urr[1]; + ur = ur.replaceAll('&','&'); + let imgPageHtmlUrl = `${window.location.origin}/${ur}`; + for(let count = 1;count<=20;count++){ + if((!!countF)&&(typeof countF =='function')){ + countF(count); + } + await sleep(3000); + let imgPageHtml; + try{ + imgPageHtml = (await (await fetch(imgPageHtmlUrl,{headers:{"cookieID":cookieID}})).text()); + }catch(e){ + console.error(e); + } + if(!imgPageHtml){ + continue; + } + //用正则找全部图片 + let allSrc = imgPageHtml.matchAll(/]*src="([^"]*)"[^<>]*>/g); + let imgs = []; + for(let src;!(src=allSrc.next()).done;){ + imgs[imgs.length] = { + img:src.value[1].split('?')[0], + mImg:src.value[1].replaceAll('&','&') + } + } + if(imgs.length>0){ + return imgs; + }else{ + throw new Error("服务器未正常返回图片!"); + } + } +} diff --git a/js/gissues.js b/js/gissues.js index 64ecbfb..1ab225f 100644 --- a/js/gissues.js +++ b/js/gissues.js @@ -41,10 +41,10 @@ attrs.description = descriptionMeta ? descriptionMeta.content : ''; let ogtitleMeta = document.querySelector("meta[property='og:title'],meta[name='og:title']"); attrs['og:title'] = ogtitleMeta ? ogtitleMeta.content : ''; - document.head.insertAdjacentHTML('afterbegin', ""); + document.head.insertAdjacentHTML('afterbegin', ""); let Origin = "https://gissues.gitee.io"; let url = Origin + "/Gissues.html"; - script.insertAdjacentHTML('afterend', "
\n \n
"); + script.insertAdjacentHTML('afterend', "
"); let container = script.nextElementSibling; script.parentElement.removeChild(script); addEventListener('message', function (event) {