/* ziye githubå°å https://github.com/ziye12/JavaScript TGé¢éå°å https://t.me/ziyescript TG交æµç¾¤ https://t.me/joinchat/AAAAAE7XHm-q1-7Np-tF3g è½¬è½½è¯·å¤æ³¨ä¸ªååï¼è°¢è°¢ 11.25 å¢å é 读æ¶é¿ä¸ä¼ ï¼é 读éå¸ï¼é è¯»éæºéå¸ 11.25 ä¿®å¤ç¿»åå®ç®±ä¸åæ¶é¢åçé®é¢.å¢å é 读éå¸å¤å® 11.25 ä¿®å¤é 读æ¶é¿é®é¢ï¼é 读éå¸é®é¢ï¼è¯·éæ°è·åæ¶é¿cookie 11.26 éæºéå¸åªæä¸æ¬¡ï¼æ å»é¤ï¼è°æ´ä¿®å¤é 读éå¸é®é¢ï¼å¢å æ¶é¿ä¸ä¼ éå¶ 11.26 å¢å é¢å卿¶é¿å¥å± 11.26 å¢å ç»æå½ä»¤ 11.27 è°æ´éç¥ä¸ºï¼æåå¼å¯å®ç®±åéç¥ 11.28 ä¿®å¤é误 11.29 æ´æ° æ¯æaction.é»è®¤æ¯å¤©21ç¹å°21ç¹20éç¥ 12.2 ä¿®å¤æå¡é®é¢ 12.3 缩çè¿è¡æ¶é´ï¼ç±äºä¼é¹ è¯»ä¹¦çæ¬æ´æ°.请æå¨è¿å»ç䏿¬¡ä¹¦ 12.3 è°æ´æ¨éæ¶é´ä¸º12ç¹å24ç¹å·¦å³ 12.6 ç²¾ç®æå°éç¥ 12.7 è§£å³1éå¸é®é¢ï¼å¡å¿ éæ°è·å䏿¬¡æ´æ°body 12.8 æ´æ°æ¯æboxjs â ï¸cookieè·åæ¹æ³ï¼ è¿ https://m.q.qq.com/a/s/d3eacc70120b9a37e46bad408c0c4c2a è¿ä¹¦åºéæ©ä¸æ¬ä¹¦,ç10ç§ä»¥ä¸,ç¶åéåºï¼è·åæ¶é¿urlåæ¶é¿header以忴æ°bodyï¼ç书ä¸å®ä¸è½è¶ è¿10ç§ Secrets对åºå ³ç³»å¦ä¸ï¼å¤è´¦å·é»è®¤æ¢è¡ qqreadbodyVal ð QQREAD_BODY qqreadtimeurlVal ð QQREAD_TIMEURL qqreadtimeheaderVal ð QQREAD_TIMEHD â ï¸å®ç®±å¥å±ä¸º20åé䏿¬¡ï¼èªå·±æ ¹æ®æ åµè®¾ç½®å®æ¶ï¼å»ºè®®è®¾ç½®11åé䏿¬¡ hostname=mqqapi.reader.qq.com ############## åx #ä¼é¹ 读书è·åæ´æ°body https:\/\/mqqapi\.reader\.qq\.com\/log\/v4\/mqq\/track url script-request-body https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js #ä¼é¹ 读书è·åæ¶é¿cookie https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid? url script-request-header https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js ############## loon //ä¼é¹ 读书è·åæ´æ°body http-request https:\/\/mqqapi\.reader\.qq\.com\/log\/v4\/mqq\/track script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js,requires-body=true, tag=ä¼é¹ 读书è·åæ´æ°body //ä¼é¹ 读书è·åæ¶é¿cookie http-request https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid? script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js, requires-header=true, tag=ä¼é¹ 读书è·åæ¶é¿cookie ############## surge //ä¼é¹ 读书è·åæ´æ°body ä¼é¹ 读书è·åæ´æ°body = type=http-request,pattern=https:\/\/mqqapi\.reader\.qq\.com\/log\/v4\/mqq\/track,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js, //ä¼é¹ 读书è·åæ¶é¿cookie ä¼é¹ 读书è·åæ¶é¿cookie = type=http-request,pattern=https:\/\/mqqapi\.reader\.qq\.com\/mqq\/addReadTimeWithBid?,script-path=https://raw.githubusercontent.com/ziye12/JavaScript/master/Task/qqreads.js, */ const jsname = "ä¼é¹ 读书"; const $ = Env(jsname); $.idx = ($.idx = ($.getval('qeSuffix') || '1') - 1) > 0 ? ($.idx + 1 + '') : ''; // è´¦å·æ©å±å符 const notify = $.isNode() ? require("./sendNotify") : ""; let tz = ""; let kz = ""; let task = ""; let config = ""; let COOKIES_SPLIT = "\n"; // èªå®ä¹å¤cookieä¹é´è¿æ¥çåé符ï¼é»è®¤ä¸º\næ¢è¡åå²ï¼ä¸çæçä¸è¦æ¹å¨åé ç½®ï¼ä¸ºäºå ¼å®¹æ¬å°nodeæ§è¡ const logs = 0; // 0ä¸ºå ³éæ¥å¿ï¼1为å¼å¯ const notifyInterval = 3; // 0ä¸ºå ³ééç¥ï¼1为ææéç¥ï¼2为å®ç®±é¢åæåéç¥ï¼3为å®ç®±æ¯15次éç¥ä¸æ¬¡ const dd = 1; // 忬¡ä»»å¡å»¶è¿,é»è®¤1ç§ const TIME = 30; // 忬¡æ¶é¿ä¸ä¼ éå¶ï¼é»è®¤5åé const maxtime = 12; // æ¯æ¥ä¸ä¼ æ¶é¿éå¶ï¼é»è®¤12å°æ¶ const wktimess = 1200; // å¨å¥å±é¢åæ åï¼é»è®¤1200åé const qqreadbdArr = []; let qqreadbodyVal = ""; const qqreadtimeurlArr = []; let qqreadtimeurlVal = ""; const qqreadtimehdArr = []; let qqreadtimeheaderVal = ""; let qqreadBD = []; let qqreadtimeURL = []; let qqreadtimeHD = []; if ($.isNode()) { if (process.env.COOKIES_SPLIT) { COOKIES_SPLIT = process.env.COOKIES_SPLIT; } console.log( `============ cookiesåé符为ï¼${JSON.stringify( COOKIES_SPLIT )} =============\n` ); if ( process.env.QQREAD_BODY && process.env.QQREAD_BODY.indexOf(COOKIES_SPLIT) > -1 ) { qqreadBD = process.env.QQREAD_BODY.split(COOKIES_SPLIT); } else { qqreadBD = process.env.QQREAD_BODY.split(); } if ( process.env.QQREAD_TIMEURL && process.env.QQREAD_TIMEURL.indexOf(COOKIES_SPLIT) > -1 ) { qqreadtimeURL = process.env.QQREAD_TIMEURL.split(COOKIES_SPLIT); } else { qqreadtimeURL = process.env.QQREAD_TIMEURL.split(); } if ( process.env.QQREAD_TIMEHD && process.env.QQREAD_TIMEHD.indexOf(COOKIES_SPLIT) > -1 ) { qqreadtimeHD = process.env.QQREAD_TIMEHD.split(COOKIES_SPLIT); } else { qqreadtimeHD = process.env.QQREAD_TIMEHD.split(); } } if ($.isNode()) { Object.keys(qqreadBD).forEach((item) => { if (qqreadBD[item]) { qqreadbdArr.push(qqreadBD[item]); } }); Object.keys(qqreadtimeURL).forEach((item) => { if (qqreadtimeURL[item]) { qqreadtimeurlArr.push(qqreadtimeURL[item]); } }); Object.keys(qqreadtimeHD).forEach((item) => { if (qqreadtimeHD[item]) { qqreadtimehdArr.push(qqreadtimeHD[item]); } }); console.log( `============ å ±${qqreadtimehdArr.length}个ä¼é¹ è¯»ä¹¦è´¦å· =============\n` ); console.log( `============ èæ¬æ§è¡-å京æ¶é´(UTC+8)ï¼${new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).toLocaleString()} =============\n` ); } else { qqreadbdArr.push($.getdata("qqreadbd")); qqreadtimeurlArr.push($.getdata("qqreadtimeurl")); qqreadtimehdArr.push($.getdata("qqreadtimehd")); // æ ¹æ®boxjsä¸è®¾ç½®çé¢å¤è´¦å·æ°ï¼æ·»å åå¨çè´¦å·æ°æ®è¿è¡ä»»å¡å¤ç let qeCount = ($.getval('qeCount') || '1') - 0; for (let i = 2; i <= qeCount; i++) { if ($.getdata(`qqreadbd${i}`)) { qqreadbdArr.push($.getdata(`qqreadbd${i}`)); qqreadtimeurlArr.push($.getdata(`qqreadtimeurl${i}`)); qqreadtimehdArr.push($.getdata(`qqreadtimehd${i}`)); } } } if ((isGetCookie = typeof $request !== "undefined")) { GetCookie(); $.done(); } function GetCookie() { if ($request && $request.url.indexOf("addReadTimeWithBid?") >= 0) { const qqreadtimeurlVal = $request.url; if (qqreadtimeurlVal) $.setdata(qqreadtimeurlVal, "qqreadtimeurl" + $.idx); $.log( `[${jsname + $.idx}] è·åæ¶é¿url: æå,qqreadtimeurlVal: ${qqreadtimeurlVal}` ); $.msg(jsname + $.idx, `è·åæ¶é¿url: æåð`, ``); const qqreadtimeheaderVal = JSON.stringify($request.headers); if (qqreadtimeheaderVal) $.setdata(qqreadtimeheaderVal, "qqreadtimehd" + $.idx); $.log( `[${jsname + $.idx}] è·åæ¶é¿header: æå,qqreadtimeheaderVal: ${qqreadtimeheaderVal}` ); $.msg(jsname + $.idx, `è·åæ¶é¿header: æåð`, ``); } else if ($request &&$request.body.indexOf("bookDetail_bottomBar_read_C")>=0&&$request.body.indexOf("bookRead_show_I")>=0&&$request.body.indexOf("topBar_left_back_C")<0&&$request.body.indexOf("bookRead_dropOut_shelfYes_C")<0){ const qqreadbodyVal = $request.body; if (qqreadbodyVal) $.setdata(qqreadbodyVal, "qqreadbd" + $.idx); $.log( `[${jsname + $.idx}] è·åæ´æ°body: æå,qqreadbodyVal: ${qqreadbodyVal}` ); $.msg(jsname + $.idx, `è·åæ´æ°body: æåð`, ``); } } let K = 0; all(); function all() { qqreadbodyVal = qqreadbdArr[K]; qqreadtimeurlVal = qqreadtimeurlArr[K]; qqreadtimeheaderVal = qqreadtimehdArr[K]; for (let i = 0; i < 15; i++) { (function (i) { setTimeout( function () { if (i == 0) { qqreadinfo(); // ç¨æ·å qqreadwktime(); // 卿¶é¿æ¥è¯¢ qqreadconfig(); // æ¶é¿æ¥è¯¢ } else if (i == 1) qqreadtask(); else if ( i == 2) qqreadtrack(); // ä»»å¡å表 else if ( i == 3 && config.data && config.data.pageParams.todayReadSeconds / 3600 <= maxtime ) qqreadtime(); // ä¸ä¼ æ¶é¿ else if (i == 4 && task.data && task.data.taskList[1].doneFlag == 0) qqreadssr1(); // é 读éå¸1 else if (i == 5 && task.data && task.data.taskList[2].doneFlag == 0) { qqreadsign(); // éå¸ç¾å° qqreadtake(); // é è±ç¾å° } else if (i == 6 && task.data && task.data.treasureBox.doneFlag == 0) qqreadbox(); // å®ç®± else if (i == 7 && task.data && task.data.taskList[0].doneFlag == 0) qqreaddayread(); // é è¯»ä»»å¡ else if (i == 8 && task.data && task.data.taskList[1].doneFlag == 0) qqreadssr2(); // é 读éå¸2 else if (i == 9) qqreadpick(); // é¢å¨æ¶é¿å¥å± else if (i == 10 && task.data && task.data.taskList[3].doneFlag == 0) qqreadvideo(); // è§é¢ä»»å¡ else if (i == 11 && task.data && task.data.taskList[2].doneFlag == 0) qqreadsign2(); // ç¾å°ç¿»å else if ( i == 12 && task.data && task.data.treasureBox.videoDoneFlag == 0 ) qqreadbox2(); // å®ç®±ç¿»å else if (i == 13 && task.data && task.data.taskList[1].doneFlag == 0) qqreadssr3(); // é 读éå¸3 else if (i == 14 && K < qqreadbdArr.length - 1) { K += 1; all(); } else if (i == 14 && K == qqreadbdArr.length - 1) { showmsg(); // éç¥ $.done(); } }, (i + 1) * dd * 1000 ); })(i); } } // ä»»å¡å表 function qqreadtask() { return new Promise((resolve, reject) => { const toqqreadtaskurl = { url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/page?fromGuid=", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadtaskurl, (error, response, data) => { if (logs) $.log(`${jsname}, ä»»å¡å表: ${data}`); task = JSON.parse(data); kz += `ãç°éä½é¢ã:${(task.data.user.amount / 10000).toFixed(2)}å \n` + `ãå·²å¼å®ç®±ã:${task.data.treasureBox.count}个\n`; tz += `ãç°éä½é¢ã:${(task.data.user.amount / 10000).toFixed(2)}å \n` + `ã第${task.data.invite.issue}æã:æ¶é´${task.data.invite.dayRange}\n` + ` å·²é请${task.data.invite.inviteCount}人ï¼åé请${task.data.invite.nextInviteConfig.count}人è·å¾${task.data.invite.nextInviteConfig.amount}éå¸\n` + `ã${task.data.taskList[0].title}ã:${task.data.taskList[0].amount}éå¸,${task.data.taskList[0].actionText}\n` + `ã${task.data.taskList[1].title}ã:${task.data.taskList[1].amount}éå¸,${task.data.taskList[1].actionText}\n` + `ã${task.data.taskList[2].title}ã:${task.data.taskList[2].amount}éå¸,${task.data.taskList[2].actionText}\n` + `ã${task.data.taskList[3].title}ã:${task.data.taskList[3].amount}éå¸,${task.data.taskList[3].actionText}\n` + `ãå®ç®±ä»»å¡${task.data.treasureBox.count + 1}ã:${ task.data.treasureBox.tipText }\n` + `ã${task.data.fans.title}ã:${task.data.fans.fansCount}个好å,${task.data.fans.todayAmount}éå¸\n`; resolve(); }); }); } // æ´æ° function qqreadtrack() { return new Promise((resolve, reject) => { const body = qqreadbodyVal.replace(new RegExp(/"dis":[0-9]{13}/),`"dis":${new Date().getTime()}`) const toqqreadtrackurl = { url: "https://mqqapi.reader.qq.com/log/v4/mqq/track", headers: JSON.parse(qqreadtimeheaderVal), body: body, timeout: 60000, }; $.post(toqqreadtrackurl, (error, response, data) => { if (logs) $.log(`${jsname}, æ´æ°: ${data}`); track = JSON.parse(data); tz += `ãæ°æ®æ´æ°ã:æ´æ°${track.msg}\n`; resolve(); }); }); } // ç¨æ·å function qqreadinfo() { return new Promise((resolve, reject) => { const toqqreadinfourl = { url: "https://mqqapi.reader.qq.com/mqq/user/init", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadinfourl, (error, response, data) => { if (logs) $.log(`${jsname}, ç¨æ·å: ${data}`); info = JSON.parse(data); kz += `\n========== ã${info.data.user.nickName}ã ==========\n`; tz += `\n========== ã${info.data.user.nickName}ã ==========\n`; resolve(); }); }); } // é è±ç¾å° function qqreadtake() { return new Promise((resolve, reject) => { const toqqreadtakeurl = { url: "https://mqqapi.reader.qq.com/mqq/sign_in/user", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.post(toqqreadtakeurl, (error, response, data) => { if (logs) $.log(`${jsname}, é è±ç¾å°: ${data}`); take = JSON.parse(data); if (take.data.takeTicket > 0) { tz += `ãé è±ç¾å°ã:è·å¾${take.data.takeTicket}è±\n`; } resolve(); }); }); } // é 读æ¶é¿ä»»å¡ function qqreadconfig() { return new Promise((resolve, reject) => { const toqqreadconfigurl = { url: "https://mqqapi.reader.qq.com/mqq/page/config?router=%2Fpages%2Fbook-read%2Findex&options=", headers: JSON.parse(qqreadtimeheaderVal), }; $.get(toqqreadconfigurl, (error, response, data) => { if (logs) $.log(`${jsname}, é 读æ¶é¿æ¥è¯¢: ${data}`); config = JSON.parse(data); if (config.code == 0) tz += `ãæ¶é¿æ¥è¯¢ã:仿¥é 读${( config.data.pageParams.todayReadSeconds / 60 ).toFixed(0)}åé\n`; resolve(); }); }); } // é 读æ¶é¿ function qqreadtime() { return new Promise((resolve, reject) => { const toqqreadtimeurl = { url: qqreadtimeurlVal.replace(/readTime=/g, `readTime=${TIME}`), headers: JSON.parse(qqreadtimeheaderVal), }; $.get(toqqreadtimeurl, (error, response, data) => { if (logs) $.log(`${jsname}, é 读æ¶é¿: ${data}`); time = JSON.parse(data); if (time.code == 0) tz += `ãé 读æ¶é¿ã:ä¸ä¼ ${TIME / 6}åé\n`; resolve(); }); }); } // é 读éå¸1 function qqreadssr1() { return new Promise((resolve, reject) => { const toqqreadssr1url = { url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=30`, headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; if (config.data && config.data.pageParams.todayReadSeconds / 60 >= 1) { $.get(toqqreadssr1url, (error, response, data) => { if (logs) $.log(`${jsname}, éå¸å¥å±1: ${data}`); ssr1 = JSON.parse(data); if (ssr1.data.amount > 0) tz += `ãé 读éå¸1ãè·å¾${ssr1.data.amount}éå¸\n`; resolve(); }); } }); } // é 读éå¸2 function qqreadssr2() { return new Promise((resolve, reject) => { const toqqreadssr2url = { url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=300`, headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; if (config.data && config.data.pageParams.todayReadSeconds / 60 >= 5) { $.get(toqqreadssr2url, (error, response, data) => { if (logs) $.log(`${jsname}, éå¸å¥å±2: ${data}`); ssr2 = JSON.parse(data); if (ssr2.data.amount > 0) tz += `ãé 读éå¸2ãè·å¾${ssr2.data.amount}éå¸\n`; resolve(); }); } }); } // é 读éå¸3 function qqreadssr3() { return new Promise((resolve, reject) => { const toqqreadssr3url = { url: `https://mqqapi.reader.qq.com/mqq/red_packet/user/read_time?seconds=1800`, headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; if (config.data && config.data.pageParams.todayReadSeconds / 60 >= 30) { $.get(toqqreadssr3url, (error, response, data) => { if (logs) $.log(`${jsname}, éå¸å¥å±3: ${data}`); ssr3 = JSON.parse(data); if (ssr3.data.amount > 0) tz += `ãé 读éå¸3ãè·å¾${ssr3.data.amount}éå¸\n`; resolve(); }); } }); } // éå¸ç¾å° function qqreadsign() { return new Promise((resolve, reject) => { const toqqreadsignurl = { url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/clock_in/page", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadsignurl, (error, response, data) => { if (logs) $.log(`${jsname}, éå¸ç¾å°: ${data}`); sign = JSON.parse(data); if (sign.data.videoDoneFlag) { tz += `ãéå¸ç¾å°ã:è·å¾${sign.data.todayAmount}éå¸\n`; } resolve(); }); }); } // éå¸ç¾å°ç¿»å function qqreadsign2() { return new Promise((resolve, reject) => { const toqqreadsign2url = { url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/clock_in_video", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadsign2url, (error, response, data) => { if (logs) $.log(`${jsname}, éå¸ç¾å°ç¿»å: ${data}`); sign2 = JSON.parse(data); if (sign2.code == 0) { tz += `ãç¾å°ç¿»åã:è·å¾${sign2.data.amount}éå¸\n`; } resolve(); }); }); } // æ¯æ¥é 读 function qqreaddayread() { return new Promise((resolve, reject) => { const toqqreaddayreadurl = { url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/read_book", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreaddayreadurl, (error, response, data) => { if (logs) $.log(`${jsname}, æ¯æ¥é 读: ${data}`); dayread = JSON.parse(data); if (dayread.code == 0) { tz += `ãæ¯æ¥é 读ã:è·å¾${dayread.data.amount}éå¸\n`; } resolve(); }); }); } // è§é¢å¥å± function qqreadvideo() { return new Promise((resolve, reject) => { const toqqreadvideourl = { url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/watch_video", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadvideourl, (error, response, data) => { if (logs) $.log(`${jsname}, è§é¢å¥å±: ${data}`); video = JSON.parse(data); if (video.code == 0) { tz += `ãè§é¢å¥å±ã:è·å¾${video.data.amount}éå¸\n`; } resolve(); }); }); } // å®ç®±å¥å± function qqreadbox() { return new Promise((resolve, reject) => { const toqqreadboxurl = { url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/treasure_box", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadboxurl, (error, response, data) => { if (logs) $.log(`${jsname}, å®ç®±å¥å±: ${data}`); box = JSON.parse(data); if (box.data.count >= 0) { tz += `ãå®ç®±å¥å±${box.data.count}ã:è·å¾${box.data.amount}éå¸\n`; } resolve(); }); }); } // å®ç®±å¥å±ç¿»å function qqreadbox2() { return new Promise((resolve, reject) => { const toqqreadbox2url = { url: "https://mqqapi.reader.qq.com/mqq/red_packet/user/treasure_box_video", headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadbox2url, (error, response, data) => { if (logs) $.log(`${jsname}, å®ç®±å¥å±ç¿»å: ${data}`); box2 = JSON.parse(data); if (box2.code == 0) { tz += `ãå®ç®±ç¿»åã:è·å¾${box2.data.amount}éå¸\n`; } resolve(); }); }); } // æ¬å¨é 读æ¶é¿ function qqreadwktime() { return new Promise((resolve, reject) => { const toqqreadwktimeurl = { url: `https://mqqapi.reader.qq.com/mqq/v1/bookShelfInit`, headers: JSON.parse(qqreadtimeheaderVal), }; $.get(toqqreadwktimeurl, (error, response, data) => { if (logs) $.log(`${jsname}, é 读æ¶é¿: ${data}`); wktime = JSON.parse(data); if (wktime.code == 0) tz += `ãæ¬å¨é 读æ¶é¿ã:${wktime.data.readTime}åé\n`; resolve(); }); }); } // æ¬å¨é 读æ¶é¿å¥å±ä»»å¡ function qqreadpick() { return new Promise((resolve, reject) => { const toqqreadpickurl = { url: `https://mqqapi.reader.qq.com/mqq/pickPackageInit`, headers: JSON.parse(qqreadtimeheaderVal), }; if (wktime.data.readTime >= wktimess && wktime.data.readTime <= 1250) { $.get(toqqreadpickurl, (error, response, data) => { if (logs) $.log(`${jsname},å¨é 读æ¶é¿å¥å±ä»»å¡: ${data}`); pick = JSON.parse(data); if (pick.data[7].isPick == true) tz += "ã卿¶é¿å¥å±ã:å·²å ¨é¨é¢å\n"; for (let i = 0; i < pick.data.length; i++) { setTimeout(() => { const pickid = pick.data[i].readTime; const Packageid = [ "10", "10", "20", "30", "50", "80", "100", "120", ]; const toqqreadPackageurl = { url: `https://mqqapi.reader.qq.com/mqq/pickPackage?readTime=${pickid}`, headers: JSON.parse(qqreadtimeheaderVal), timeout: 60000, }; $.get(toqqreadPackageurl, (error, response, data) => { if (logs) $.log(`${jsname}, é¢å¨é 读æ¶é¿: ${data}`); Package = JSON.parse(data); if (Package.code == 0) tz += `ã卿¶é¿å¥å±${i + 1}ã:é¢å${Packageid[i]}é è±\n`; }); }, i * 100); } }); resolve(); } }); } function showmsg() { tz += `\n\n========= èæ¬æ§è¡-å京æ¶é´(UTC+8)ï¼${new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).toLocaleString()} \n\n`; const d = new Date(new Date().getTime() + 8 * 60 * 60 * 1000); if ( (d.getHours() == 12 && d.getMinutes() <= 20) || (d.getHours() == 23 && d.getMinutes() >= 40) ) { notify.sendNotify(jsname, kz); } if (notifyInterval != 1) console.log(tz); // æ éç¥æ¶ï¼æå°éç¥ if (notifyInterval == 1) $.msg(jsname, "", tz); // æ¾ç¤ºææéç¥ else if ( notifyInterval == 2 && task.data && task.data.treasureBox.doneFlag == 0 ) $.msg(jsname, "", tz); // å®ç®±é¢åæåéç¥ else if ( (notifyInterval == 3 && task.data && task.data.treasureBox.count == 0) || task.data.treasureBox.count == 15 || task.data.treasureBox.count == 30 || task.data.treasureBox.count == 45 || task.data.treasureBox.count == 60 ) $.msg(jsname, "", tz); // å®ç®±æ¯15次éç¥ä¸æ¬¡ } // prettier-ignore function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}