版本: ${JSver} 已启动,部分线路需要科学上网,更换线路请点击"设置"。当前线路: ${getGPTMode() || "Default"};当前自动点击状态: ${localStorage.getItem("autoClick") || "关闭"}
朗读
复制
原文
中断
全屏
隐藏
`;
resolve(divE)
})
}
let speakAudio;
let isPlayend = true;
async function pivElemAddEventAndValue(append_case) {
let search_content
try {
if (append_case === 11) {//手机google
search_content = document.querySelector("#tsf textarea").value
}
if (append_case === 10) {//手机sogou
search_content = document.querySelector("input#keyword").value
}
if (append_case === 9) {//手机360
search_content = document.querySelector("input#q").value
}
if (append_case === 8) {
search_content = document.querySelector("input#upquery").value
}
if (append_case === 7) {
search_content = document.querySelector("#search_form input").value
}
if (append_case === 5) {
search_content = document.getElementById("search-input").value
}
if (append_case === 4) {
search_content = document.getElementById("keyword").value
}
if (append_case === 3) {
search_content = document.querySelectorAll("input")[0].value
}
if (append_case === 2) {
search_content = document.getElementById('kw').value
}
if (append_case === 1) {
try {
search_content = document.querySelector(
"#tsf > div:nth-child(1) > div.A8SBwf > div.RNNXgb > div > div.a4bIc > input:nth-child(3)"
).value
} catch (e) {
search_content = document.querySelector("textarea").value
}
}
if (append_case === 0) {
search_content = document.getElementsByClassName('b_searchbox')[0].value
if (!search_content) {
search_content = document.querySelector("textarea[class='b_searchbox']").value;
}
}
} catch (e) {
console.log(e)
}
document.getElementById("gptInput").value = search_content || ''
document.getElementById('button_GPT').addEventListener('click', () => {
your_qus = document.getElementById("gptInput").value
//字体设置
if(your_qus.startsWith("/font-size:")){
let fontSize = your_qus.substring("/font-size:".length)
document.querySelector("#gptDiv").style.fontSize = fontSize;
localStorage.setItem("gpt_font_size",fontSize)
Toast.success(`字体设置成功:${fontSize}`)
return
}
//禁用历史记录
if(your_qus.startsWith("/history_disable:")){
let dis = your_qus.substring("/history_disable:".length)
history_disable = (dis === 'true' ? true : false);
localStorage.setItem("history_disable", dis)
Toast.success(`禁用历史记录设置成功:${history_disable}`)
return
}
do_it()
})
//搜索建议
document.getElementById('gptInput').addEventListener('keyup', () => {
console.log("autoTips:",autoTips)
if(autoTips !== 'on') return
let current;
let word = document.getElementById('gptInput').value;
if(!word) return;
if(current){
current.abort();
}
console.log(word)
current = GM_xmlhttpRequest({
method: "GET",
url: "https://www.baidu.com/sugrec?&prod=pc&wd="+encodeURIComponent(word),
responseType: "text",
onload:(r) => {
//console.log(r)
if (r.status === 200) {
//console.log(r);
let dataList = JSON.parse(r.responseText).g;
const su = document.querySelector('#suggestions');
su.innerHTML = '';
dataList && dataList.forEach(v => {
const optionElement = document.createElement('option');
optionElement.value = v.q;
optionElement.innerText = v.q;
su.appendChild(optionElement);
});
}
}
});
})
document.getElementById('updatePubkey').addEventListener('click', () => {
Toast.info("正在更新,请稍后...")
setPubkey()
})
document.getElementById('autoClick').addEventListener('click', () => {
if(autoClick){
localStorage.removeItem("autoClick")
autoClick = undefined;
Toast.error("自动点击已经关闭")
}else{
localStorage.setItem("autoClick", "开启")
autoClick = "开启"
Toast.success("自动点击已经开启")
}
})
document.getElementById('autoTips').addEventListener('click', () => {
if(autoTips === 'on'){
//关闭
localStorage.setItem("autoTips", "off")
autoTips = "off"
Toast.error("自动提示已关")
}else{
//开启
localStorage.setItem("autoTips", "on")
autoTips = "on"
Toast.success("自动提示已开启")
}
})
document.getElementById('darkTheme').addEventListener('click', () => {
try{
document.getElementById("github-markdown-link").remove()
document.getElementById("highlight-link").remove()
}catch (e) { console.error(e) }
if(darkTheme){
localStorage.removeItem("darkTheme")
darkTheme = undefined;
Toast.success("暗黑已经开启")
}else{
localStorage.setItem("darkTheme", "关闭")
darkTheme = "关闭"
Toast.error("暗黑已经关闭")
}
})
//朗读
document.getElementById('speakAnser').addEventListener('click', () => {
let ans = document.querySelector("#gptAnswer");
if(!isPlayend){
Toast.success('已暂停播放!');
speakAudio.pause();
isPlayend = true;
return;
}else {
Toast.warn('音频已停止,正在重新播放!')
}
if(ans){
// let speakText = encodeURIComponent(ans.innerText);
let speakText = ans.innerText;
//new sogou api
// 弹出对话框询问用户是否同意
const result = confirm("是否启用外国口音朗读? 默认为中文口音。");
let dialect = "zh-CHS"
if (result) {
dialect = "en"
console.log("英文朗读!");
}
let f = JSON.stringify({
curTime: Date.now(),
rate: "1",
spokenDialect: dialect,
text: speakText
})
let sParam = CryptoJS.AES.encrypt(f.replace(/^"|"$/g, ""), CryptoJS.enc.Utf8.parse("76350b1840ff9832eb6244ac6d444366"), {
"iv": CryptoJS.enc.Utf8.parse(atob("AAAAAAAAAAAAAAAAAAAAAA==") || "76350b1840ff9832eb6244ac6d444366"),
"mode": CryptoJS.mode.CBC,
"pad": CryptoJS.pad.Pkcs7
}).toString();
speakAudio = new Audio(`https://fanyi.sogou.com/openapi/external/getWebTTS?S-AppId=102356845&S-Param=${encodeURIComponent(sParam)}`);
speakAudio.play()
isPlayend = false;
speakAudio.addEventListener("ended",function() {
isPlayend = true;
Toast.success('音频已播放完毕!');
})
}
})
//原文切换
document.getElementById('rawAns').addEventListener('click', (ev) => {
let ans = document.querySelector("#gptAnswer");
if(!rawAns) {
Toast.error("原文无内容")
return
};
if(!isShowRaw){
ans.innerText = rawAns;
isShowRaw = true;
Toast.success("已为你显示原文")
}else{
showAnserAndHighlightCodeStr(rawAns)
isShowRaw = false;
Toast.success("已为你显示非原文")
}
})
//中断回答
document.getElementById('stopAns').addEventListener('click', (ev) => {
try{
if(abortXml){
abortXml.abort();
abortXml = undefined;
}else {
Toast.error("无法中断!")
}
}catch(ex){
console.error("中断失败:",ex)
Toast.error("中断失败!")
}
})
//全屏
document.getElementById('fullScreen').addEventListener('click', (ev) => {
try{
if(!isFullScreen){
document.getElementById("gptDiv").classList.add("fullScreen")
isFullScreen = true;
}else {
document.getElementById("gptDiv").classList.remove("fullScreen")
isFullScreen = false;
}
}catch(ex){
console.error("ex:",ex)
Toast.error("未知异常!")
}
})
//隐藏
document.getElementById('hideGptDiv').addEventListener('click', (ev) => {
try{
$("body").append(`
`)
$(".floating-button a").click(function() {
$("#gptDiv").show();
$(".floating-button").remove()
});
$("#gptDiv").hide();
}catch(ex){
console.error("ex:",ex)
Toast.error("未知异常!")
}
})
//复制答案
document.getElementById('copyAns').addEventListener('click', (ev) => {
let ans = document.querySelector("#gptAnswer");
if(isShowRaw){
GM_setClipboard(rawAns, "text");
}else{
let cps = document.querySelectorAll(".btn-pre-copy");
for (let cp of cps){
cp.innerText = ''
}
GM_setClipboard(ans.innerText, "text");
for (let cp of cps){
cp.innerText = '复制代码'
}
}
Toast.success("复制成功!")
})
document.getElementById('modeSelect').addEventListener('change', () => {
const selectEl = document.getElementById('modeSelect');
const selectedValue = selectEl.options[selectEl.selectedIndex].value;
localStorage.setItem('GPTMODE', selectedValue);
Toast.success(`切换成功,当前线路:${selectedValue}`)
});
let chatSetting = false;
document.getElementById('chatSetting').addEventListener('click', () => {
if(!chatSetting){
//显示内容
try{
document.querySelector("#gptStatus").classList.remove("chatHide")
document.querySelector("#warn").classList.remove("chatHide")
document.querySelector("#autoClickP").classList.remove("chatHide")
document.querySelector("#darkThemeP").classList.remove("chatHide")
document.querySelector("#website").classList.remove("chatHide")
document.querySelector("#autoTipsP").classList.remove("chatHide")
}catch (e) {
console.log(e)
}
chatSetting = true;
}else{
//隐藏
try{
document.querySelector("#gptStatus").classList.add("chatHide")
document.querySelector("#warn").classList.add("chatHide")
document.querySelector("#autoClickP").classList.add("chatHide")
document.querySelector("#darkThemeP").classList.add("chatHide")
document.querySelector("#website").classList.add("chatHide")
document.querySelector("#autoTipsP").classList.add("chatHide")
}catch (e) {
console.log(e)
}
chatSetting = false;
}
})
}
async function appendBox(append_case) {
return new Promise((resolve, reject) => {
creatBox().then((divE) => {
let resetWidth = (width)=>{
try {
if(width){
document.querySelector("#gptDiv").style.setProperty("width",width);
return
}
document.querySelector("#gptDiv").style.setProperty("width",
"100%")
/*document.querySelector("#gptInput").setAttribute("class",
"se-input adjust-input")*/
} catch (e) {
console.error(e)
}
}
switch (append_case) {
case 0: //bing
if (divE) {
if(isMobile()){
//手机bing
document.getElementById('b_results').prepend(divE)
resetWidth();
}else{
document.getElementById('b_context').prepend(divE)
}
}
break;
case 1: //google
if(isMobile()){
//手机google
document.querySelector("div#msc").after(divE);
resetWidth();
}else if (document.getElementsByClassName('TQc1id ')[0]) {
document.getElementsByClassName('TQc1id ')[0].prepend(divE);
} else {
//other
document.getElementById("rcnt").appendChild(divE);
}
break;
case 2: //baidu
if (document.getElementById('content_right')) {
document.getElementById('content_right').prepend(divE)
}
break;
case 3: //yandex
if (document.getElementById('search-result-aside')) {
document.getElementById('search-result-aside').prepend(divE)
}
break;
case 4: //360
if(isMobile()){
//手机360
document.getElementById("search-box").appendChild(divE);
resetWidth();
}else{
if (document.getElementById('side')) {
document.getElementById('side').prepend(divE)
}
}
break;
case 5: //fsoufsou
if(isMobile()){
//手机fsou
let frow = document.querySelectorAll(".flex-row")[3]
if (frow.children!==undefined ) {
frow.children.item(0).prepend(divE)
}
resetWidth()
}else{
let frow = document.querySelectorAll(".flex-row")[2]
if (frow.children!==undefined && frow.children.length === 2) {
frow.children.item(1).prepend(divE)
} else {
frow.innerHTML = frow.innerHTML +
`
`
}
}
break;
case 6: //手机百度
if (document.getElementById('page-bd')) {
document.getElementById('page-bd').prepend(divE)
//调整css
resetWidth();
}
break;
case 7: //duckduckgo
if(isMobile()){
//手机dockgo
document.querySelector('form#search_form').after(divE)
resetWidth();
}else{
if (document.querySelector('[data-area="sidebar"]')) {
document.querySelector('[data-area="sidebar"]').prepend(divE)
}
}
break;
case 8: //sogou
if(isMobile()){
//手机搜狗
document.querySelector('form#searchform').after(divE)
resetWidth();
}else{
if (document.querySelector('div.right')) {
document.querySelector('div.right').prepend(divE)
}
}
break;
case 9: //bilibili
if (document.querySelector('div#danmukuBox')) {
document.querySelector('div#danmukuBox').children.item(0).prepend(divE)
resetWidth();
}
break;
case 10: //csdn
let asideDiv = document.querySelector("aside.blog_container_aside div")
if (asideDiv) {
asideDiv.after(divE)
let t = asideDiv.offsetTop + asideDiv.offsetHeight + 5;
const screenHeight = window.screen.height;
document.querySelector("#gptDiv").setAttribute("style",
`position: fixed;top: ${t}px;left: 0px;z-index: 9999;width:410px;`)
//滚动条
document.querySelector("#gptAnswer").setAttribute("style",
`height: ${screenHeight/5}px;overflow-y:scroll`)
}
break;
default:
if (divE) {
console.log(`啥情况${divE}`)
}
}
}).catch((err) => {
throw new Error(err)
}).finally(()=>{
if(autoClick){
setTimeout(() => {
document.getElementById("button_GPT").click(); //自动点击
}, 1500)
}
})
resolve("finished")
})
}
//焦点函数
function isBlur() {
let myInput = document.getElementById('gptInput');
if (myInput === document.activeElement) {
return 1
} else {
return 0
}
}
function keyEvent() {
document.onkeydown = function (e) {
let keyNum = window.event ? e.keyCode : e.which;
if (13 === keyNum) {
if (isBlur()) {
document.getElementById('button_GPT').click()
} else {
console.log("失焦不执行")
}
}
}
}
function addBothStyle() {
GM_addStyle(`
.gpt-container {
box-sizing: border-box;
height: -webkit-min-content;
height: min-content;
width: 455px;
margin-top: 8px;
margin-bottom: 8px;
border: 1px solid #dfe1e5;
border-radius: 8px;
overflow: hidden;
padding: 15px;
background-color:#fcfcfc
}
#dot{
height: 4px;
width: 4px;
display: inline-block;
border-radius: 2px;
animation: dotting 2.4s infinite step-start;
}
@keyframes dotting {
25%{
box-shadow: 4px 0 0 #71777D;
}
50%{
box-shadow: 4px 0 0 #71777D ,14px 0 0 #71777D;
}
75%{
box-shadow: 4px 0 0 #71777D ,14px 0 0 #71777D, 24px 0 0 #71777D;
}
}
pre{
overflow-x: scroll;
overflow-y: hidden;
background: #fffaec;
border-radius: 4px;
padding: 14px 3px;
}
pre::-webkit-scrollbar {
}`);
}
function Uint8ArrayToString(fileData) {
let dataString = "";
for (let i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
}
return dataString;
}
function decodeUnicode(str) {
str = str.replace(/\\/g, "%");
//转换中文
str = unescape(str);
//将其他受影响的转换回原来
str = str.replace(/%/g, "\\");
//对网址的链接进行处理
str = str.replace(/\\/g, "");
return str;
}
(function (extension) {
if (typeof showdown !== 'undefined') {
// global (browser or node.js global)
extension(showdown);
} else if (typeof define === 'function' && define.amd) {
// AMD
define(['showdown'], extension);
} else if (typeof exports === 'object') {
// Node, CommonJS-like
module.exports = extension(require('showdown'));
} else {
// showdown was not found so an error is thrown
throw Error('Could not find showdown library');
}
}(function (showdown) {
// loading extension into showdown
showdown.extension('myext', function () {
return [
//to katex
{
type: 'output',
filter: function (source, converter, options) {
//debugger
return katexTohtml(source);
}
},
// filter xss
{
type: 'output',
filter: function (source, converter, options) {
//debugger
return source.replace(/
let req1 = await GM_fetch({
method: "GET",
url: "https://xinghuo.xfyun.cn/chat",
headers: {
"origin":"https://xinghuo.xfyun.cn",
"referer":"https://xinghuo.xfyun.cn/"
}
})
let r = req1.responseText;
//console.log(r);
let mainjs;
try{
mainjs = /src="(\/static\/js\/main.*?.js)"/.exec(r)[1];//https://xinghuo.xfyun.cn/static/js/main.04f3ec36.js
console.log("mainjs:",mainjs)
}catch (e) {
console.error(r)
Toast.error("出错了,js获取失败")
}
if(mainjs){
console.log("https://xinghuo.xfyun.cn"+ mainjs.trim())
let req2 = await GM_fetch({
method: "GET",
url: "https://xinghuo.xfyun.cn"+ mainjs.trim(),
headers: {
"origin":"https://xinghuo.xfyun.cn",
"referer":"https://xinghuo.xfyun.cn/"
}
})
let rr = req2.responseText;
console.log(rr.substring(0,100))
try{
const re = /appId:"(.*?)"/gi;
let match;
while ((match = re.exec(rr)) !== null) {
console.log(match[1]);
sp_appId = match[1];
}
/*let index = rr.indexOf("appId");
if (index !== -1) {
let sp_appId = rr.substring(index, index + 10); // 指定文本
}*/
console.log("sp_appId:",sp_appId)
}catch (e) {
console.error(e)
Toast.error("出错了,sp_appId获取失败",)
}
}
}
setTimeout(()=>{
if(getGPTMode()==="SPARK"){
init_sp_appId()
}
})
async function init_sp_chatId() {
//https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/create-chat-list
let req1 = await GM_fetch({
method: "POST",
url: "https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/create-chat-list",
headers: {
"accept": "application/json, text/plain, */*",
"x-requested-with": "XMLHttpRequest",
"origin":"https://xinghuo.xfyun.cn",
"Content-Type":"application/json",
"referer":"https://xinghuo.xfyun.cn/desk"
},
data:"{}"
})
let r = req1.responseText;
try{
sp_chatId = JSON.parse(r).data.id;
console.log("sp_chatId:",sp_chatId)
}catch (e) {
console.error(r)
Toast.error("sp_chatId获取失败")
}
}
setTimeout(()=>{
if(getGPTMode()==="SPARK"){
init_sp_chatId()
}
},500)
async function get_sp_GtToken() {
return new Promise(async (resolve, reject) => {
//https://riskct.geetest.com/g2/api/v1/pre_load?client_type=h5&callback=geetest_时间戳
let timestamp = Date.now();
let req1 = await GM_fetch({
method: "GET",
url: `https://riskct.geetest.com/g2/api/v1/pre_load?client_type=h5&callback=geetest_${timestamp}`,
headers: {
"accept": "*/*",
"referer": "https://xinghuo.xfyun.cn/"
}
})
let r = req1.responseText;
console.log(r);
try {
let rr = r.replace(`geetest_${timestamp}(`,
"");
rr = rr.substring(0, rr.length - 1)
console.log("rr", rr)
let rj = JSON.parse(rr);
console.log("rj:");
console.log(rj);
//====
let config = {
appId: sp_appId,
js: rj.data.js,
staticPath: rj.data.staticPath,
gToken: rj.data.gToken
}
console.log("config")
console.log(config)
setTimeout(() => {
initGeeGuard(config, (gd) => {
console.log(gd)
if (gd.data.gee_token) {
sp_GtToken = gd.data.gee_token;
resolve(sp_GtToken)
}else{
reject("出错")
}
})
}, 500)
} catch (e) {
console.error(e)
setTimeout(init_sp_chatId)
reject("出错")
}
})
}
//解码
function decodeSpark(src) {
/*let rv = function(e) {
return e.replace(/[^A-Za-z0-9\+\/]/g, "")
}*/
let dv = function(e) {
//return Buffer.from(e, "base64").toString("utf8")
// 将 base64 编码的字符串转换为字节数组
const bytes = CryptoJS.enc.Base64.parse(e);
// 将字节数组转换为 UTF-8 字符串
return bytes.toString(CryptoJS.enc.Utf8);
}//等价BASE64解码 6KaB
/*let fv = function(e) {
return dv(function(e) {
return rv(e.replace(/[-_]/g, (function(e) {
return "-" == e ? "+" : "/"
}
)))
}(e))
};*/
return dv(src);
}
let spark_first = true;
async function SPARK(){
showAnserAndHighlightCodeStr("请稍后,第一次切换到该线路需要刷新页面,该线路为官网线路,使用前确保已经登录[讯飞星火](https://xinghuo.xfyun.cn/)")
await get_sp_GtToken()
console.log("sp_GtToken",sp_GtToken)
//重命名
if(spark_first){
let req1 = await GM_fetch({
method: "POST",
url: "https://xinghuo.xfyun.cn/iflygpt/u/chat-list/v1/rename-chat-list",
headers: {
"accept": "application/json, text/plain, */*",
"x-requested-with": "XMLHttpRequest",
"origin":"https://xinghuo.xfyun.cn",
"Content-Type":"application/json",
"referer":"https://xinghuo.xfyun.cn/desk"
},
data:JSON.stringify({
"chatListId": sp_chatId,
"chatListName": your_qus.substring(0,10)
})
})
let r = req1.responseText;
console.log("rename chat:",r)
spark_first = false;
}
//提问
let sendData = `------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"fd\"\r\n\r\n${sp_fd}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"clientType\"\r\n\r\n2\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"chatId\"\r\n\r\n${sp_chatId}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"text\"\r\n\r\n${your_qus}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk\r\nContent-Disposition: form-data; name=\"GtToken\"\r\n\r\n${sp_GtToken}\r\n------WebKitFormBoundaryAS7tSr3osJng5Nxk--\r\n`;
GM_fetch({
method: 'POST',
url: 'https://xinghuo.xfyun.cn/iflygpt-chat/u/chat_message/chat',
headers: {
"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryAS7tSr3osJng5Nxk",
"challenge": "undefined",
"seccode": "",
"validate": "undefined",
"accept": "text/event-stream",
"x-requested-with": "XMLHttpRequest",
"origin":"https://xinghuo.xfyun.cn",
"referer":"https://xinghuo.xfyun.cn/desk"
},
responseType: "stream",
data: sendData
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = []
//let de = []
reader.read().then(function processText({done, value}) {
if (done) {
console.log("===done==")
//console.log(de)
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.log(responseItem)
responseItem.split("\n").forEach(item=>{
try {
let ii = item.replace(/data:/gi,"").trim();
if(ii && ii !==""){
let chunk = decodeSpark(ii)
//de.push(item.replace(/data:/gi,"").trim())
ans.push(chunk)
showAnserAndHighlightCodeStr(ans.join(""))
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
})
}
//星火相关====end=====
//天工 ----start--------
let tg_invite_Token;
let tg_token;
async function initTGtoken() {
if (location.href.includes("neice.tiangong.cn")) {
//"invite-token": "Bearer " + c("formNatureQueueWaitToken"),
tg_invite_Token = localStorage.getItem("formNatureQueueWaitToken");
//token: "Bearer " + c("formNatureResearchToken"),
tg_token = localStorage.getItem("formNatureResearchToken");
GM_setValue("tg_invite_Token", tg_invite_Token)
GM_setValue("tg_token", tg_token)
if(tg_invite_Token){
document.querySelector('div[class="title"]').innerText = `invite_Token获取成功:${tg_invite_Token}`
}else{
document.querySelector('div[class="title"]').innerText = `invite_Token获取失败,请再次刷新`
}
setTimeout(initTGtoken,2500)
} else {
tg_invite_Token = GM_getValue("tg_invite_Token")
tg_token = GM_getValue("tg_token")
}
}
setTimeout(initTGtoken)
//过时 {"code":60101,"code_msg":"当前使用授权已失效,请重新排队"}
//resp_data.invite_token
async function waitAccess() {
let req1 = await GM_fetch({
method: "POST",
url: "https://neice.tiangong.cn/api/v1/queue/waitAccess",
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://neice.tiangong.cn",
"invite-token": `Bearer null`,
"Content-Type":"application/json",
"token": `Bearer ${tg_token}`,
"device": "Web",
"referer":"https://neice.tiangong.cn/interlocutionPage"
},
data:JSON.stringify({
data:{
token: ""
}
})
})
let r = req1.responseText;
console.log(r)
return new Promise(async (resolve, reject) => {
try {
tg_invite_Token = JSON.parse(r).resp_data.invite_token;
GM_setValue("waitAccess tg_invite_Token", tg_invite_Token)
resolve("更新成功,请再次点击")
} catch (e) {
resolve("waitAccess 异常 请到官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)")
}
})
}
let tg_session_id;
let tg_msg_id;
let tg_first = true;
async function TIANGONG(){
showAnserAndHighlightCodeStr("请稍后...使用该线路,请确保已经登天工官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)")
console.log("tg_token:",tg_token)
console.log("tg_invite_Token:",tg_invite_Token)
if(!tg_invite_Token || !tg_token){
showAnserAndHighlightCodeStr("token错误了。请确保已经登天工官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)")
return
}
//校验
let req1 = await GM_fetch({
method: "POST",
url: "https://neice.tiangong.cn/api/v1/user/inviteVerify",
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://neice.tiangong.cn",
"invite-token": `Bearer ${tg_invite_Token}`,
"Content-Type":"application/json",
"token": `Bearer ${tg_token}`,
"device": "Web",
"referer":"https://neice.tiangong.cn/interlocutionPage"
},
data:JSON.stringify({
data:{}
})
})
let r = req1.responseText;
console.log(r)
if(r.includes("请重新排队")){
showAnserAndHighlightCodeStr("invite_Token失效。请至官网获取token后刷新页面。[天工AI](https://neice.tiangong.cn/interlocutionPage)")
/* let result = await waitAccess();
showAnserAndHighlightCodeStr(result)*/
await initTGtoken()
return
}
//新会话
if(!tg_session_id || tg_first){
console.log("新会话")
let req1 = await GM_fetch({
method: "POST",
url: "https://neice.tiangong.cn/api/v1/session/newSession",
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://neice.tiangong.cn",
"invite-token": `Bearer ${tg_invite_Token}`,
"Content-Type":"application/json",
"token": `Bearer ${tg_token}`,
"device": "Web",
"referer":"https://neice.tiangong.cn/interlocutionPage"
},
data:JSON.stringify({
data:{
content: your_qus
}
})
})
let r = req1.responseText;
console.log(r)
let rj = JSON.parse(r);
tg_session_id = rj.resp_data.session_id
tg_msg_id = rj.resp_data.dialogue[rj.resp_data.dialogue.length - 1].message_id
console.log("tg_session_id:",tg_session_id)
console.log("tg_msg_idg:",tg_msg_id)
tg_first = false;
}else {
console.log("旧会话")
let req1 = await GM_fetch({
method: "POST",
url: "https://neice.tiangong.cn/api/v1/chat/chat",
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://neice.tiangong.cn",
"invite-token": `Bearer ${tg_invite_Token}`,
"Content-Type":"application/json",
"token": `Bearer ${tg_token}`,
"device": "Web",
"referer":"https://neice.tiangong.cn/interlocutionPage"
},
data:JSON.stringify({
data:{
content: your_qus,
session_id: tg_session_id
}
})
})
let r = req1.responseText;
console.log(r)
let rj = JSON.parse(r);
tg_msg_id = rj.resp_data.result_message.message_id
console.log("tg_msg_idg:",tg_msg_id)
}
//获取信息信息
for (let i = 0; i < 120; i++) {
let req2 = await GM_fetch({
method: "POST",
timeout: 3000,
url: "https://neice.tiangong.cn/api/v1/chat/getMessage",
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://neice.tiangong.cn",
"invite-token": `Bearer ${tg_invite_Token}`,
"Content-Type":"application/json",
"token": `Bearer ${tg_token}`,
"device": "Web",
"referer":"https://neice.tiangong.cn/interlocutionPage"
},
data:JSON.stringify({
"data": {
"message_id": tg_msg_id
}
})
})
let rr = req2.responseText;
console.log(rr)
let rj = JSON.parse(rr);
try {
if(rj.resp_data.result_message.content){
showAnserAndHighlightCodeStr(rj.resp_data.result_message.content)
}
if(rj.resp_data.result_message.status === 3){
break;
}
}catch (e) {}
await delay(1000)
}
}
//天工 ----end--------
//问心一言 ----start---
let yy_aisearch_id;
let yy_pvId;
let yy_sessionId;
async function initYiYAN(){
let req1 = await GM_fetch({
method: "GET",
url: `https://chat.baidu.com/?pcasync=pc&asyncRenderUrl=&passportStaticPage=https%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fv3Jump.html&from=pc_tab&word=${encodeURI(your_qus)}&source=pd_ic`,
headers: {
"accept": "*/*",
"origin":"https://www.baidu.com",
"referer":`https://www.baidu.com/`
},
data:JSON.stringify({
data:{}
})
})
let r = req1.responseText;
yy_aisearch_id = /"aisearch_id":"(.*?)"/i.exec(r)[1];
yy_pvId = /"pvId":"(.*?)"/i.exec(r)[1];
yy_sessionId = /"sessionId":"(.*?)"/i.exec(r)[1];
console.log("yy_aisearch_id:",yy_aisearch_id)
console.log("yy_pvId:",yy_pvId)
console.log("yy_sessionId:",yy_sessionId)
}
setTimeout(()=>{
if(getGPTMode() === 'YIYAN'){
initYiYAN()
}
})
async function YIYAN() {
showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登百度账号,再刷新页面。[百度](https://www.baidu.com/)")
GM_fetch({
method: 'POST',
url: 'https://chat-ws.baidu.com/aichat/api/conversation',
headers: {
"origin":"https://www.baidu.com",
"referer":`https://www.baidu.com/`,
"Content-Type": "application/json",
"accept": "text/event-stream"
},
responseType: "stream",
data: JSON.stringify({
"message": {
"inputMethod": "keyboard",
"isRebuild": false,
"content": {
"query": your_qus,
"qtype": 0
}
},
"sessionId": yy_sessionId,
"aisearchId": yy_aisearch_id,
"pvId": yy_pvId
})
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = []
let preResponseItem = '';//前一记录
let combineItem = [];//合并
let referenceList;//引用
reader.read().then(function processText({done, value}) {
if (done) {
console.log("===done==")
//console.log(de)
let result = ans.join("");
let arr = result.match(/\^(.*?)\^/g);
let oldArr = arr.slice()
if(referenceList && referenceList.length > 0){
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < referenceList.length; j++) {
if(arr[i].includes(`[${j+1}]`)){
let url = referenceList[j].url;
arr[i] = arr[i].replace(`[${j+1}]`,`[${j+1}](${url})`)
}
}
}
}
console.log("arr:",arr)
console.log("oldArr:",oldArr)
for (let i = 0; i < oldArr.length; i++) {
result = result.replace(oldArr[i],arr[i].replace(/\^/g,""))
}
showAnserAndHighlightCodeStr(result)
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.log(responseItem)
if(!responseItem.includes("event:ping") && !responseItem.startsWith("event:messag")){
combineItem.push(preResponseItem)
combineItem.push(responseItem)
preResponseItem = '';//恢复初始
responseItem = combineItem.join("")//合并
console.log("combineItem:",responseItem)
combineItem = [];//清空
}else if(!responseItem.includes("event:ping")){
preResponseItem = responseItem;
}
responseItem.split("\n").forEach(item=>{
try {
let ii = item.replace(/data:/gi,"").trim();
if(ii && ii !==""){
let chunk = JSON.parse(ii).data.message.content.generator.text
//de.push(item.replace(/data:/gi,"").trim())
ans.push(chunk)
showAnserAndHighlightCodeStr(ans.join(""))
if(JSON.parse(ii).data.message.content.generator.referenceList){
referenceList = JSON.parse(ii).data.message.content.generator.referenceList
}
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//问心一言 ----end---
//腾讯混元 ----start-----
let hunyuan_tUserId = '';
let hunyuan_count = 0;
async function initHunyuanID() {
if (location.href.includes("hunyuan.tencent.com")) {
hunyuan_tUserId = getCookieValue(document.cookie,"hy_user");
GM_setValue("hunyuan_tUserId", hunyuan_tUserId)
if(hunyuan_tUserId){
Toast.info(`hunyuan_tUserId获取成功:${hunyuan_tUserId}`)
}else{
setTimeout(initHunyuanID, 5000)
if(hunyuan_count < 3){
Toast.info(`hunyuan_tUserId获取失败,请再次刷新!`)
}
hunyuan_count++;
}
} else {
hunyuan_tUserId = GM_getValue("hunyuan_tUserId")
}
}
setTimeout(initHunyuanID)
let hunyuan_isfirst = true;
let hunyuan_chatId ;
async function initHunyuan(){
let req1 = await GM_fetch({
method: "POST",
url: `https://hunyuan.tencent.com/api/generate/id`,
headers: {
"accept": "application/json, text/plain, */*",
"origin":"https://hunyuan.tencent.com",
"referer":`https://hunyuan.tencent.com/bot/chat`,
"t-userid": hunyuan_tUserId,
"x-requested-with": "XMLHttpRequest",
"x-source": "web"
},
data:null
})
let r = req1.responseText;
hunyuan_chatId = r;
if(hunyuan_chatId) hunyuan_isfirst = false;
console.error("hunyuan_chatId:",r)
}
async function Hunyuan() {
showAnserAndHighlightCodeStr("该线路为官网线路,请确保登录[混元](https://hunyuan.tencent.com/bot/chat)并成功获得tuserid")
if(!hunyuan_tUserId){
showAnserAndHighlightCodeStr("hunyuan_tUserId为空,请登录[混元](https://hunyuan.tencent.com/bot/chat)获取,再刷新页面")
return
}
if(hunyuan_isfirst && !hunyuan_chatId){
await initHunyuan()
}
GM_fetch({
method: 'POST',
url: `https://hunyuan.tencent.com/api/chat/${hunyuan_chatId}`,
headers: {
"origin":"https://hunyuan.tencent.com",
"referer":`https://hunyuan.tencent.com/bot/chat`,
"chat_version": "v1",
"content-type": "text/plain;charset=UTF-8",
"accept": "*/*",
"t-userid": hunyuan_tUserId,
"x-requested-with": "XMLHttpRequest",
"x-source": "web"
},
responseType: "stream",
data: JSON.stringify({
"model": "gpt_175B_0404",
"prompt": your_qus,
"displayPrompt": your_qus,
"displayPromptType": 1,
"plugin": "Adaptive",
"isSkipHistory": false
})
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = []
reader.read().then(function processText({done, value}) {
if (done) {
console.log("===done==")
//console.log(de)
let result = ans.join("");
showAnserAndHighlightCodeStr(result)
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.log(responseItem)
responseItem.split("\n").forEach(item=>{
try {
let ii = item.replace(/data:/gi,"").trim();
if(ii && ii !==""){
let chunk = JSON.parse(ii).msg
//de.push(item.replace(/data:/gi,"").trim())
ans.push(chunk)
showAnserAndHighlightCodeStr(ans.join(""))
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//腾讯混元 ----end-----
//ChatGLM相关 ----start-----
//https://chatglm.cn
let chatgml_token;
async function init_chatgml_token() {
if (location.href.includes("chatglm.cn")) {
chatgml_token = getCookieValue(document.cookie, "chatglm_token")
GM_setValue("chatgml_token", chatgml_token)
if (chatgml_token) {
console.log(`chatgml_token获取成功:${chatgml_token}`)
} else {
console.log('invite_Token获取失败,请再次刷新')
}
} else if(getGPTMode() === 'ChatGLM') {
chatgml_token = GM_getValue("chatgml_token")
console.log("chatgml_token:", chatgml_token)
}
}
setTimeout(()=>{
init_chatgml_token()
setInterval(init_chatgml_token,5000)
})
let chatgml_first = true;
let chatgml_task_id;
let chatgml_context_id;
async function ChatGLM() {
console.log("chatgml_token:",chatgml_token)
showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
if(!chatgml_token){
setTimeout(init_chatgml_token)
showAnserAndHighlightCodeStr("init_chatgml_token为空,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
return
}
if (chatgml_first || !chatgml_task_id) {
let req1 = await GM_fetch({
method: "POST",
url: `https://chatglm.cn/chatglm/backend-api/v1/conversation`,
headers: {
"accept": "application/json, text/plain, */*",
"authorization": `Bearer ${chatgml_token}`,
"origin": "https://chatglm.cn",
"content-type": "application/json;charset=UTF-8",
"referer": `https://chatglm.cn/detail`
},
data: JSON.stringify({
"prompt": your_qus
})
})
let r = req1.responseText;
let jsonObj = JSON.parse(r);
try {
chatgml_task_id = jsonObj.result.task_id;
console.log("chatgml_task_id:",chatgml_task_id)
chatgml_first = false;
}catch (e) {
showAnserAndHighlightCodeStr("task_id出错了,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
return
}
}
let req1 = await GM_fetch({
method: "POST",
url: `https://chatglm.cn/chatglm/backend-api/v1/stream_context`,
headers: {
"accept": "application/json, text/plain, */*",
"authorization": `Bearer ${chatgml_token}`,
"origin": "https://chatglm.cn",
"content-type": "application/json;charset=UTF-8",
"referer": `https://chatglm.cn/detail`
},
data: JSON.stringify({
"prompt": your_qus,
"seed": 69809,
"max_tokens": 512,
"conversation_task_id": chatgml_task_id,
"retry": false,
"retry_history_task_id": null
})
})
let r = req1.responseText;
let jsonObj = JSON.parse(r);
try {
chatgml_context_id = jsonObj.result.context_id;
console.log("chatgml_context_id:",chatgml_task_id)
}catch (e) {
showAnserAndHighlightCodeStr("context_id出错了,请确保已经登录并获取token,再刷新页面。[ChatGLM](https://chatglm.cn/)")
return
}
GM_fetch({
method: "GET",
url: `https://chatglm.cn/chatglm/backend-api/v1/stream?context_id=${chatgml_context_id}`,
headers: {
"accept": "text/event-stream",
"origin": "https://chatglm.cn",
"referer": `https://chatglm.cn/detail`
},
responseType:"stream"
}).then((stream)=> {
let reader = stream.response.getReader()
reader.read().then(function processText({done, value}) {
if (done) {
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
// console.error(responseItem)
responseItem = responseItem.split("\n\n");
console.warn(responseItem)
responseItem.forEach(item=>{
try {
if(item && item.startsWith("event:add") || item.startsWith("event:finish")){
let ii = item.replace(/data:/gi,"")
.replace(/event:add/gi,"")
.replace(/event:finish/gi,"")
.trim();
if(ii){
showAnserAndHighlightCodeStr(ii)
}
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//ChatGLM相关 ----start-----
//智谱AI
let zhipuToken = '4056fc44f1474c1e85e976577f930e40.O6WKndzKWBjQJWcA';
let zhipuPrompt = []
let zhipu_apiKey = localStorage.getItem("ZhipuapiKey")
function base64UrlEncode(str) {
let encodedSource = CryptoJS.enc.Base64.stringify(str);
const reg = new RegExp('/', 'g');
encodedSource = encodedSource.replace(/=+$/,'').replace(/\+/g,'-').replace(reg,'_');
return encodedSource;
}
function generate_token(apikey, exp_seconds) {
const [id, secretKey] = apikey.split(".");
const payload = {
"api_key": id,
"exp": Date.now() + exp_seconds * 1000,
"timestamp": Date.now(),
// "exp": 1687878553567,
// "timestamp": 1687877553567
};
const encodedHeader = base64UrlEncode(CryptoJS.enc.Utf8.parse(JSON.stringify({ alg: 'HS256', sign_type: 'SIGN', typ: "JWT"})));
const encodedPayload = base64UrlEncode(CryptoJS.enc.Utf8.parse(JSON.stringify(payload)));
const signature = CryptoJS.HmacSHA256(encodedHeader + '.' + encodedPayload, secretKey);
console.log(signature)
//const encodedSignature = window.btoa(signature);
const jwt = encodedHeader + '.' + encodedPayload + '.' + base64UrlEncode(signature);
console.log(jwt);
return jwt;
}
function ZhipuAI(){
showAnserAndHighlightCodeStr("请稍后。未申请key的,请前往[智谱AI](https://open.bigmodel.cn/usercenter/apikeys)申请,然后点击设置里的更新key")
if(!localStorage.getItem("ZhipuapiKey")){
showAnserAndHighlightCodeStr("apikey不存在。请前往[智谱AI](https://open.bigmodel.cn/usercenter/apikeys)申请,然后点击设置里的更新key")
return
}
zhipu_apiKey = zhipu_apiKey || localStorage.getItem("ZhipuapiKey");
addMessageChain(zhipuPrompt, {"role": "user", "content": your_qus} , 10)
GM_fetch({
method: "POST",
url: `https://open.bigmodel.cn/api/paas/v3/model-api/chatglm_std/sse-invoke`,
headers: {
"accept": "text/event-stream",
"Content-Type":"application/json",
"Authorization": generate_token(zhipu_apiKey, 1000)
// "Authorization": 'eyJhbGciOiJIUzI1NiIsInNpZ25fdHlwZSI6IlNJR04iLCJ0eXAiOiJKV1QifQ.eyJhcGlfa2V5IjoiZjM3ZDVlMjFhZDk1NGJhOTM0NmYyOTgwMTgzNDJiMjciLCJleHAiOjE2ODc4Nzg1NTM1NjcsInRpbWVzdGFtcCI6MTY4Nzg3NzU1MzU2N30.e8SMjA0vBaUxXB-WrViFa0-C0qVLechNV5L5s2WoF8c'
},
data:JSON.stringify({
model:"chatglm_std",
prompt : zhipuPrompt,
temperature: 0.95,
top_p: 0.7,
incremental: true
}),
responseType:"stream"
}).then((stream)=> {
let reader = stream.response.getReader()
let ans = [];
reader.read().then(function processText({done, value}) {
if (done) {
if(ans.length > 0){
addMessageChain(zhipuPrompt, {"role": "assistant", "content": ans.join("")} , 10)
}
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
console.error(responseItem)
responseItem = responseItem.split("\n");
console.warn(responseItem)
responseItem.forEach(item=>{
try {
if(item && item.startsWith("data:")){
let ii = item.replace(/data:/gi,"")
if(ii){
ans.push(ii)
showAnserAndHighlightCodeStr(ans.join(""))
}
}
}catch (ex){
console.error(item)
}
})
return reader.read().then(processText)
},function (reason) {
Toast.error("未知错误!")
console.log(reason)
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//360智脑 -------start------
let conversation_id;
async function Zhinao360(){
showAnserAndHighlightCodeStr("请稍后...该线路为官网线路,使用该线路,请确保已经登录[360智脑](https://chat.360.cn/)")
const sendData = JSON.stringify({
"prompt": your_qus,
"conversation_id": conversation_id || "",
"source_type": "prophet_web",
"role": "00000001",
"is_regenerate": false,
"is_so": false
});
console.log(conversation_id)
GM_fetch({
method: "POST",
url: `https://chat.360.cn/backend-api/api/common/chat`,
headers: {
"accept": "text/event-stream",
"origin": "https://chat.360.cn",
"referer": `https://chat.360.cn/index`,
"content-type": "application/json",
},
data: sendData,
responseType:"stream"
}).then((stream)=> {
let reader = stream.response.getReader()
let result = []
reader.read().then(function processText({done, value}) {
if (done) {
return
}
let responseItem = new TextDecoder("utf-8").decode(value)
// console.error(responseItem)
console.warn(responseItem)
if(responseItem){
responseItem.split("\n").forEach(item=>{
try{
if(item.startsWith("data: CONVERSATIONID####")){
conversation_id = item.replace(/data: CONVERSATIONID####/gi,"")
}else if(item.startsWith("data: MESSAGEID####")){
}else if(item.startsWith("data")){
let i = item.replace(/data: /gi,"")
if(i){
result.push(i)
}else{
result.push("\n")
}
}
}catch (e) {}
})
showAnserAndHighlightCodeStr(result.join(""))
}
return reader.read().then(processText)
},function (reason) {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
Toast.error("未知错误!")
console.log(ex)
})
})
}
//360智脑 -------end------
async function ChatGO() {
let response = await GM_fetch({
method: "GET",
url: `https://gptgo.ai/action_get_token.php?q=${encodeURIComponent(your_qus)}&hlgpt=default`,
headers: {
"Referer": "https://gptgo.ai/?hl=zh",
"origin": "https://gptgo.ai/",
}
});
let resp = response.responseText;
if(!resp){
return ;
}
let tk = JSON.parse(resp).token;
console.log("tk:",tk)
GM_fetch({
method: "GET",
url: `https://gptgo.ai/action_ai_gpt.php?token=${tk}`,
headers: {
"Referer": "https://gptgo.ai/?hl=zh",
"origin": "https://gptgo.ai/",
"accept": "text/event-stream"
},
responseType:"stream"
}).then((stream)=>{
let result = []
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.warn(d)
d.split("\n").forEach(item=>{
try {
let chunk = JSON.parse(item.replace(/data:/,"").trim())
.choices[0].delta.content;
result.push(chunk)
}catch (ex){
}
})
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
async function MixerBox() {
GM_fetch({
method: "POST",
url: `https://chatai.mixerbox.com/api/chat/stream`,
headers: {
"Referer": "https://chatai.mixerbox.com/chat",
"origin": "https://chatai.mixerbox.com",
"accept": "*/*",
"content-type": "application/json",
"user-agent": "Mozilla/5.0 (Android 12; Mobile; rv:107.0) Gecko/107.0 Firefox/107.0"
},
data:JSON.stringify({
"prompt": [
{
"role": "user",
"content": your_qus
}
],
"lang": "zh",
"model": "gpt-3.5-turbo",
"plugins": [],
"pluginSets": [],
"getRecommendQuestions": true,
"isSummarize": false,
"webVersion": "1.4.5",
"userAgent": "Mozilla/5.0 (Android 12; Mobile; rv:107.0) Gecko/107.0 Firefox/107.0",
"isExtension": false
}),
responseType:"stream"
}).then((stream)=>{
let result = []
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.warn(d)
d.split("\n").forEach(item=>{
try {
if(item.startsWith("data")){
result.push(item.replace(/data:/gi,""))
}
}catch (ex){
}
})
showAnserAndHighlightCodeStr(result.join("").
replace(/\[space\]/gi," ").
replace(/\[NEWLINE\]/gi,"\n").
replace(/message_donedone/gi,"\n").
replace(/\[DONE\]/gi,"\n"))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
let ohmygpt_session_id = 'e0df5f92-0973-4465-93e1-dcb7cf482d7d';
let ohmygpt_token = '';
let ohmygpt_messageChain = [{"role":"system","content":"You are ChatGPT, a large language model trained by OpenAI."}]
async function OhMyGPT() {
addMessageChain(ohmygpt_messageChain, {"role":"user","content":your_qus},10)
const params = new URLSearchParams();
let sendData = {
session_id: ohmygpt_session_id ? ohmygpt_session_id:'e0df5f92-0973-4465-93e1-dcb7cf482d7d',
content: JSON.stringify(ohmygpt_messageChain),
max_context_length: '5',
params: '{"model":"gpt-3.5-turbo","temperature":1,"max_tokens":2048,"presence_penalty":0,"frequency_penalty":0,"max_context_length":5,"voiceShortName":"zh-CN-XiaoxiaoNeural","rate":1,"pitch":1}'
}
for (const key in sendData) {
params.append(key, sendData[key]);
}
const encodedData = params.toString();
GM_fetch({
method: "POST",
url: `https://www.ohmygpt.com/api/v1/ai/chatgpt/chat`,
headers: {
"Referer": "https://www.ohmygpt.com/",
"authorization": ohmygpt_token,
"origin": "https://www.ohmygpt.com",
"accept": "text/event-stream",
"content-type": 'application/x-www-form-urlencoded',
},
data: encodedData,
responseType:"stream"
}).then((stream)=>{
let result = []
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.warn(d)
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
let minimax_group_id = localStorage.getItem("minimax_group_id")//"172531245...";
let minimax_api_key = localStorage.getItem("minimax_api_key")// "eyJhbGciOi.....
let minimax_messageChain = [];
async function miniMax() {
if(!minimax_group_id || !minimax_api_key){
showAnserAndHighlightCodeStr("group_id或api_key不存在,请到[https://api.minimax.chat/](https://api.minimax.chat/)注册,申请。然后点击 设置-》更新秘钥")
}
addMessageChain(minimax_messageChain, {
"sender_type": "USER",
"sender_name": "用户",
"text": your_qus
},10)
let sendData = {
"model": "abab5.5-chat",
"tokens_to_generate": 1024,
"temperature": 0.9,
"top_p": 0.95,
"stream": false,
"reply_constraints": {
"sender_type": "BOT",
"sender_name": "MM智能助理"
},
"sample_messages": [],
"plugins": [],
"messages": minimax_messageChain,
"bot_setting": [
{
"bot_name": "MM智能助理",
"content": "MM智能助理是一款由MiniMax自研的,没有调用其他产品的接口的大型语言模型。MiniMax是一家中国科技公司,一直致力于进行大模型相关的研究。"
}
]
}
GM_fetch({
method: "POST",
url:`https://api.minimax.chat/v1/text/chatcompletion_pro?GroupId=${minimax_group_id}`,
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${minimax_api_key}`,
},
data: JSON.stringify(sendData),
responseType:"stream"
}).then((stream)=>{
let result = []
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
addMessageChain(minimax_messageChain,{
"sender_type": "BOT",
"sender_name": "MM智能助理",
"text": result.join("")
},10)
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.warn(d)
result.push(JSON.parse(d).reply)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},reason => {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
})
}
let pizzaSecret;
function PIZZA() {
abortXml = GM_xmlhttpRequest({
method: "POST",
url: "https://www.pizzagpt.it/api/chatx-completion",
headers: {
"content-type": "application/json",
"Referer": `https://www.pizzagpt.it/`,
"origin": `https://www.pizzagpt.it`,
"x-secret": pizzaSecret
},
data: JSON.stringify({
question: your_qus
}),
onload: function (res) {
if (res.status === 200) {
console.log('成功....')
console.log(res)
let rest = res.responseText
//console.log(rest.choices[0].text.replaceAll("\n",""))
try {
showAnserAndHighlightCodeStr(JSON.parse(rest).answer.content)
} catch (e) {
console.log(e)
Toast.error(rest)
}
} else {
console.log('失败')
console.log(res)
Toast.error('访问失败了')
}
},
responseType: "text",
onerror: function (err) {
console.error(err)
showAnserAndHighlightCodeStr("出错,[访问](https://www.pizzagpt.it/)")
}
});
}
function PHIND() {
GM_xmlhttpRequest({
method: "POST",
url: "https://www.phind.com/api/web/search",
headers: {
"Content-Type": "application/json",
"Referer": `https://www.phind.com`
},
data: JSON.stringify({
"q": your_qus,
"userRankList": {},
"browserLanguage": "zh-CN"
}),
onload: function (res) {
if (res.status === 200) {
console.log('成功....')
console.log(res)
let rest = res.responseText
//console.log(rest.choices[0].text.replaceAll("\n",""))
let rjson = JSON.parse(rest);
let _bingResults = rjson.processedBingResults;
console.log(_bingResults)
GM_xmlhttpRequest({
method: "POST",
url: "https://www.phind.com/api/infer/answer",
headers: {
"Content-Type": "application/json",
"Referer": "https://www.phind.com/",
"accept": "*/*"
},
data: JSON.stringify({
"question": your_qus,
"bingResults": _bingResults,
"codeContext": "",
"options": {
"skill": "intermediate",
"date": formatTime(),
"language": "zh-CN",
"detailed": true,
"creative": false
}
}),
onloadstart: (stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log(d)
let dd = d.replace(/data: /g, "").split("\r\n\r\n")
console.log("dd:",dd)
dd.forEach(item=>{
try {
result.push(item)
showAnserAndHighlightCodeStr(result.join(""))
}catch (e) {
}
})
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!")
}
});
} else {
console.log('失败')
console.log(res)
showAnserAndHighlightCodeStr('访问失败了,[phind](https://www.phind.com/api/web/search)')
}
},
responseType: "application/json;charset=UTF-8",
onerror: function (err) {
Toast.error(`some err happends,errinfo :${err.messages}`)
}
});
}
function WOBCW() {
GM_xmlhttpRequest({
url: "https://chat1.wobcw.com/chat",
headers: {
"accept": "*/*",
"referrer": "https://chat1.wobcw.com/",
"content-type": "multipart/form-data; boundary=----WebKitFormBoundarybrMK1QixymFcNJzK"
},
data: `------WebKitFormBoundarybrMK1QixymFcNJzK\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\n${your_qus}\r\n------WebKitFormBoundarybrMK1QixymFcNJzK\r\nContent-Disposition: form-data; name=\"regen\"\r\n\r\nfalse\r\n------WebKitFormBoundarybrMK1QixymFcNJzK--\r\n`,
method: "POST",
onload: (resp) => {
let rs = resp.responseText;
console.log(rs)
let chat_id = JSON.parse(rs).chat_id;
console.log(chat_id)
abortXml = GM_xmlhttpRequest({
method: "GET",
url: `https://chat1.wobcw.com/stream?chat_id=${chat_id}&api_key=`,
headers: {
"Content-Type": "application/json",
// "Authorization": "Bearer null",
"Referer": "https://chat1.wobcw.com/",
"accept": "text/event-stream"
},
onloadstart: (stream) => {
let result = [];
let finalResult = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
finalResult = result.join("")
showAnserAndHighlightCodeStr(finalResult)
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log("raw:",d)
let dd = d.replace(/data: /g, "").split("\n\n")
console.log("dd:",dd)
dd.forEach(item=>{
try {
let delta = JSON.parse(item).choices[0].delta.content
result.push(delta)
showAnserAndHighlightCodeStr(result.join(""))
}catch (e) {
}
})
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!")
}
})
}//end onload
})
}
let parentID_tianhu;
let tianhu_first = true;
function AITIANHU() {
let ops = {};
if (parentID_tianhu) {
ops = {parentMessageId: parentID_tianhu};
}
console.log(ops)
if (tianhu_first) {
GM_xmlhttpRequest({
method: "POST",
synchronous: true,
url: "https://www.aitianhu.com/api/session",
headers: {
"Content-Type": "application/json",
"Referer": "https://www.aitianhu.com/",
"origin": "https://www.aitianhu.com",
"accept": "application/json, text/plain, */*"
},
onload: function (res) {
console.log(res)
}
})
tianhu_first = false;
}
abortXml = GM_xmlhttpRequest({
method: "POST",
url: "https://www.aitianhu.com/api/chat-process",
headers: {
"Content-Type": "application/json",
"Referer": "https://www.aitianhu.com/",
"origin": "https://www.aitianhu.com",
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
"prompt": your_qus,
"options": ops,
"model": "gpt-3.5-turbo",
"OPENAI_API_KEY": "sk-AItianhuFreeForEveryone",
"systemMessage": "You are ChatGPT, a large language model trained by OpenAI. Follow the user's instructions carefully. Respond using markdown.",
"temperature": 0.8,
"top_p": 1
}),
onloadstart: (stream) => {
let result = "";
const reader = stream.response.getReader();
// console.log(reader.read)
let finalResult;
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
const chunk = value;
result += chunk;
try {
// console.log(normalArray)
let byteArray = new Uint8Array(chunk);
let decoder = new TextDecoder('utf-8');
console.log(decoder.decode(byteArray))
let jsonLines = decoder.decode(byteArray).split("\n");
let nowResult = JSON.parse(jsonLines[jsonLines.length - 1])
if (nowResult.text) {
console.log(nowResult)
finalResult = nowResult.text
showAnserAndHighlightCodeStr(finalResult)
}
if (nowResult.id) {
parentID_tianhu = nowResult.id;
}
} catch (e) {
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!")
}
})
}
let parentID_anzz;
function authAnzz(){
console.log("authANZZ")
GM_fetch({
method: "POST",
url: "https://free.anzz.top/zh",
headers: {
"Content-Type": "application/json",
"Referer": `https://free.anzz.top/`
},
data: JSON.stringify({})
}).then((res)=>{
console.log(res)
}).catch((ex)=>{
console.log(ex)
})
}
setTimeout(authAnzz);
function ANZZ() {
let ops = {};
if (parentID_anzz) {
ops = {parentMessageId: parentID_anzz};
}
console.log(ops)
abortXml = GM_xmlhttpRequest({
method: "POST",
url: "https://free.anzz.top/api/chat",
headers: {
"Content-Type": "application/json",
"Referer": "https://free.anzz.top/",
"origin": "https://free.anzz.top",
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
"uuid": uuidv4(),
"model": {
"id": "gpt-3.5-turbo-0613",
"name": "GPT-3.5",
"maxLength": 12000,
"tokenLimit": 16000
},
"messages": [
{
"role": "user",
"content": your_qus
}
],
"key": "",
"prompt": "你是Hello-AI, 一个基于gpt-3.5-turbo接口的ChatGPT应用。你会仔细遵循用户的指示,使用Markdown格式进行回应。请对回应的重点或核心内容进行加粗",
"temperature": 0.8,
"deviceId": uuidv4()
}),
onloadstart: (stream) => {
let result = [];
const reader = stream.response.getReader();
// console.log(reader.read)
let finalResult;
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
let byteArray = new Uint8Array(value);
let decoder = new TextDecoder('utf-8');
let d = decoder.decode(byteArray);
result.push(d)
showAnserAndHighlightCodeStr(result.join("").replace(/[anzz.top]/gi,"")
.replace(/hello-ai/gi,"")
.replace(/xxxily/gi,""))
// let dd = d.split("\n");
// console.log(dd[dd.length - 1])
// let nowResult = JSON.parse(dd[dd.length - 1])
// if (nowResult.text) {
// console.log(nowResult)
// finalResult = nowResult.text
// showAnserAndHighlightCodeStr(finalResult.replace(/[anzz.top]/gi,"")
// .replace(/hello-ai/gi,"")
// .replace(/xxxily/gi,""))
// }
// if (nowResult.id) {
// parentID_anzz = nowResult.id;
// }
} catch (e) {
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!")
}
})
}
//https://ai1.chagpt.fun/
function CVEOY() {
let baseURL = "https://free-api.cveoy.top/";
GM_xmlhttpRequest({
method: "POST",
url: baseURL + "v3/completions",
headers: {
"Content-Type": "application/json",
"origin": "https://ai1.chagpt.fun",
"Referer": baseURL
},
data: JSON.stringify({
prompt: your_qus
}),
onloadstart: (stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
try {
let finalResult = result.join("")
console.log(finalResult)
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
Toast.error("未知错误!")
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
if(d.match(/wxgpt@qq.com/gi)){
d = d.replace(/wxgpt@qq.com/gi,"")
}
result.push(d);
console.log(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!")
}
});
}
//获取A类网站key 2023年5月3日
async function setNormalKey(url) {
let response = await GM_fetch({
method: "GET",
url: url,
headers: {
"Referer": url+"/",
"origin": url,
"upgrade-insecure-requests":"1"
}
});
let resp = response.responseText;
if(!resp){
response = await GM_fetch({
method: "GET",
url: url,
headers: {
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Referer": url+"/",
"origin": url,
"cookie":"_h=_1",
"upgrade-insecure-requests":"1"
}
});
resp = response.responseText;
}
let regex = /component-url="(.*?)"/i;
let match = resp.match(regex);
let jsurl = match[1];
console.log("js url:" + jsurl);
if (!jsurl) {
//错误
console.log(resp)
Toast.error("未知错误!")
return
}
let rr = await GM_fetch({
method: "GET",
url: url + jsurl,
headers: {
"Referer": url+"/",
"origin": url,
"cookie":"_h=_1"
}
});
resp = rr.responseText;
regex = /\`\$\{\w\}:\$\{\w\}:(.*?)\`/i;
match = resp.match(regex);
let key = match[1];
console.log(url+":key:",key)
return key
}
let bnuKey = localStorage.getItem("bnuKey");
let bnuList;
let bnuInt = localStorage.getItem("bnuInt") || Math.floor(Math.random() * 7);
//https://ic.free-chat.asia/
function BNU120() {
let now = Date.now();
let Baseurl = bnuList[bnuInt].url
generateSignatureWithPkey({
t: now,
m: your_qus || "",
pkey: bnuKey
}).then(sign => {
addMessageChain(messageChain9, {role: "user", content: your_qus})//连续话
console.log(sign)
GM_fetch({
method: "POST",
url: Baseurl + "api/generate",
headers: {
"Content-Type": "application/json",
"Referer": Baseurl,
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
messages: messageChain9,
time: now,
pass: null,
sign: sign
}),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain9, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
if(finalResult.includes("Invalid signature") || finalResult.includes("exceeded your current")){
Toast.info(`请到设置更新key`)
}
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d)
showAnserAndHighlightCodeStr(result.join("")
.replace(/muspimerol/gi,""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (reason) {
console.log(reason)
Toast.error("未知错误!")
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!")
});
});
}
let messageChain_yeyu = []
function YeYu() {
let sk = localStorage.getItem("openAIkey");
if(!sk){
setPubkey()
}
let now = Date.now();
let Baseurl = `https://chat.yeyu1024.xyz/`
generateSignatureWithPkey({
t:now,
m: your_qus || "",
pkey: ""
}).then(sign => {
addMessageChain(messageChain_yeyu, {role: "user", content: your_qus})//连续话
console.log(sign)
GM_fetch({
method: "POST",
url: Baseurl + "api/generate",
headers: {
"Content-Type": "application/json",
"Referer": Baseurl,
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
messages: messageChain_yeyu,
time: now,
pass: null,
skey: sk ? sk : '',
sign: sign
}),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain_yeyu, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
if(finalResult.includes("Invalid signature") || finalResult.includes("exceeded your current")){
Toast.error(`无效或过期,请到设置更新key`)
}
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (reason) {
console.log(reason)
Toast.error("未知错误!" + reason.message)
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
});
});
}
//https://s.aifree.site/
let messageChain_aifree = []
function AIFREE() {
let now = Date.now();
let Baseurl = `https://s.aifree.site/`
generateSignatureWithPkey({
t:now,
m: your_qus || "",
pkey: {}.PUBLIC_SECRET_KEY || ""
}).then(sign => {
addMessageChain(messageChain_aifree, {role: "user", content: your_qus})//连续话
console.log(sign)
GM_fetch({
method: "POST",
url: Baseurl + "api/generate",
headers: {
"Content-Type": "application/json",
"Referer": Baseurl,
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
messages: messageChain_aifree,
time: now,
pass: null,
sign: sign
}),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain_aifree, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
if(finalResult.includes("Invalid signature") || finalResult.includes("exceeded your current")){
Toast.error(`无效或过期,请到设置更新key`)
}
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (reason) {
console.log(reason)
Toast.error("未知错误!" + reason.message)
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
});
});
}
let formatTime = () => {
let padZero = (num) => {
// 如果数字小于 10,前面补一个 0
return num < 10 ? `0${num}` : num;
}
const now = new Date(); // 获取当前时间
const hours = now.getHours(); // 获取小时
const minutes = now.getMinutes(); // 获取分钟
const seconds = now.getSeconds(); // 获取秒数
// 格式化为 HH:MM:SS 的形式
return `${padZero(hours)}:${padZero(minutes)}:${padZero(seconds)}`;
}
let cleandxid = generateRandomString(21);
let cleandxList = [];
function CLEANDX() {
let Baseurl = "https://c3.a0.chat/";
console.log(formatTime())
cleandxList.push({"content": your_qus, "role": "user", "nickname": "我", "time": `${formattedDate()} ${formatTime()}`, "isMe": true})
cleandxList.push({"content":"正在思考中...","role":"assistant","nickname":"小助手","time": `${formattedDate()} ${formatTime()}`,"isMe":false})
console.log(cleandxList)
console.log(cleandxid)
if (cleandxList.length > 6){
cleandxList = cleandxList.shift();
}
abortXml= GM_xmlhttpRequest({
method: "POST",
url: Baseurl + "v1/chat/gpt/",
headers: {
"Content-Type": "application/json",
"X-Forwarded-For": generateRandomIP(),
"Referer": Baseurl,
"accept": "application/json, text/plain, */*"
},
data: JSON.stringify({
"list": cleandxList,
"id": cleandxid,
"title": your_qus,
"prompt": "",
"temperature": 0.5,
"models": "0",
"time": `${formattedDate()} ${formatTime()}`,
"continuous": true
}),
onloadstart: (stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
cleandxList[cleandxList.length - 1] = {
"content": finalResult,
"role": "assistant",
"nickname": "小助手",
"time": `${formattedDate()} ${formatTime()}`,
"isMe": false
};
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log(d)
result.push(d)
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!" + err.message)
}
});
}
//https://www.promptboom.com/
//var promptboom_did = generateRandomString(32)
let promptboom_did = 'dd633043916550bea93f56e1af08debd'
let promptboom_token = ''
let promptboom_url = ''
let promptboom_version = '1.0'
async function PRTBOOM() {
addMessageChain(messageChain10, {role: "user", content: your_qus})//连续话
const t = Date.now()
const r = t + ":" + "question:" + promptboom_token
const sign = CryptoJS.SHA256(r).toString();
console.log(sign)
let request_json = {
'did': promptboom_did ? promptboom_did : 'dd633043916550bea93f56e1af08debd',
'chatList': messageChain10,
'special': {
'time': t,
'sign': sign,
'referer': "no-referer",
'path': "https://powerchat.top/chat/PowerChat"
}
};
let raw_requst_json = {
'data': btoa(unescape(encodeURIComponent(JSON.stringify(request_json))))
};
console.log(raw_requst_json)
GM_fetch({
method: "POST",
url: promptboom_url ? promptboom_url : 'https://api2.promptboom.com/cfdoctetstream',
headers: {
"Content-Type": "application/json",
"version": promptboom_version,
"origin": "https://powerchat.top",
"Referer": "https://powerchat.top/",
"accept": "*/*",
},
data: JSON.stringify(raw_requst_json),
responseType: "stream"
}).then((stream) => {
let result = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
let finalResult = result.join("")
try {
console.log(finalResult)
addMessageChain(messageChain10, {
role: "assistant",
content: finalResult
})
showAnserAndHighlightCodeStr(finalResult)
} catch (e) {
console.log(e)
}
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
result.push(d.replace(/
/gi,''))
showAnserAndHighlightCodeStr(result.join(""))
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},(reason)=>{
console.log(reason)
Toast.error("未知错误!" + reason.message)
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
});
/* let rootDomain = "promptboom.com";
let apiList = [`https://api2.${rootDomain}/cfdoctetstream`, `https://api2.${rootDomain}/cfdoctetstream2`, `https://api2.${rootDomain}/cfdoctetstream3`]
apiList.sort(() => Math.random() - 0.5);
let apiListBackup = [`https://api2.${rootDomain}/cfdoctetstream4`, `https://api2.${rootDomain}/cfdoctetstream5`, `https://api2.${rootDomain}/cfdoctetstream6`]
let finalApiList = apiList.concat(apiListBackup)
for (let cfdoctetstream_url of finalApiList) {
console.log(cfdoctetstream_url)
break;
}*/
}
let messageChain_anseapp = [];
async function ANSEAPP() {
let baseURL = "https://forward.free-chat.asia/";
addMessageChain(messageChain_anseapp, {role: "user", content: your_qus})//连续话
GM_fetch({
method: "POST",
url: baseURL + "v1/chat/completions",
headers: {
"Content-Type": "application/json",
"authorization": `Bearer undefined`,
"Referer": 'https://anse.free-chat.asia/'
},
data: JSON.stringify({
"model": "gpt-3.5-turbo-16k",
"messages": messageChain_anseapp,
"temperature": 0.7,
"max_tokens": 4096,
"stream": true
}),
responseType: "stream"
}).then((stream) => {
let result = [];
let finalResult = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
finalResult = result.join("")
addMessageChain(messageChain_anseapp,
{role: "assistant", content: finalResult.replace(/muspimerol/gi, "")}
)//连续话
showAnserAndHighlightCodeStr(finalResult.replace(/muspimerol/gi, ""))
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log("raw:", d)
let dd = d.replace(/data: /g, "").split("\n\n")
console.log("dd:", dd)
dd.forEach(item => {
try {
let delta = JSON.parse(item).choices[0].delta.content
result.push(delta)
showAnserAndHighlightCodeStr(result.join("").replace(/muspimerol/gi, ""))
} catch (e) {
}
})
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},function (err) {
console.error(err)
Toast.error("未知错误!" + err.message)
})
}
function TDCHAT(){
abortXml = GM_xmlhttpRequest({
method: "POST",
url: "http://7shi.zw7.lol/chat.php",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Referer": "http://7shi.zw7.lol/",
"accept": "application/json, text/plain, */*"
},
data: `id=3.5&key=&role=&title=&text=${encodeURIComponent(your_qus).replace(/%/g, '‰')}&length=${your_qus.length}&stream=1`,
onloadstart: (stream) => {
let result = [];
let finalResult = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
finalResult = result.join("")
showAnserAndHighlightCodeStr(finalResult.replace(/tdchat/gi,""))
return;
}
try {
let d = new TextDecoder("utf8").decode(new Uint8Array(value));
console.log("raw:",d)
let dd = d.replace(/data: /g, "").split("\n\n")
console.log("dd:",dd)
dd.forEach(item=>{
try {
let delta = JSON.parse(item).choices[0].delta.content
result.push(delta)
showAnserAndHighlightCodeStr(result.join("").replace(/tdchat/gi,""))
}catch (e) {
}
})
} catch (e) {
console.log(e)
}
return reader.read().then(processText);
});
},
responseType: "stream",
onerror: function (err) {
console.log(err)
Toast.error("未知错误!" + err.message)
}
})
}
//
//23-4-25
function TOYAML() {
GM_fetch({
method: "GET",
url: "https://toyaml.com/stream?q="+encodeURI(your_qus),
headers: {
"Content-Type": "application/json",
"Referer": "https://toyaml.com/",
"accept": "*/*"
},
responseType: "stream"
}).then((stream) => {
let finalResult = [];
const reader = stream.response.getReader();
reader.read().then(function processText({done, value}) {
if (done) {
return;
}
try {
// console.log(normalArray)
let byteArray = new Uint8Array(value);
let decoder = new TextDecoder('utf-8');
let nowResult = decoder.decode(byteArray)
console.log(nowResult)
if(!nowResult.match(/答案来自/)){
finalResult.push(nowResult)
}
showAnserAndHighlightCodeStr(finalResult.join(""))
} catch (ex) {
console.log(ex)
}
return reader.read().then(processText);
});
}).catch((ex)=>{
console.log(ex)
Toast.error("未知错误!" + ex.message)
})
}
//默认设置
setTimeout(()=>{
if(localStorage.getItem('GPTMODE')){
const selectEl = document.getElementById('modeSelect');
let optionElements = selectEl.querySelectorAll("option");
for (let op in optionElements) {
if(optionElements[op].value === localStorage.getItem('GPTMODE')){
optionElements[op].setAttribute("selected", "selected");
break;
}
}
}
if(localStorage.getItem('gpt_font_size')){
document.querySelector("#gptDiv").style.fontSize = localStorage.getItem('gpt_font_size');
}
//禁用历史
if(localStorage.getItem('history_disable')){
let dis = localStorage.getItem('history_disable');
history_disable = (dis === 'true' ? true : false);
}
},1000)
})();