diff --git a/githubAction.md b/githubAction.md index 6cd31647..95067f33 100644 --- a/githubAction.md +++ b/githubAction.md @@ -47,7 +47,7 @@ | `JDJOY_SHARECODES` | 疯狂的JOY互助码 | 非必须 | 6/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | | `BOOKSHOP_SHARECODES` | 京东书店互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | | `JD_CASH_SHARECODES` | 签到领现金互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | -| `JXNC_SHARECODES` | 京喜农场互助码 | 非必须 | / | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | +| `JXNC_SHARECODES` | 京喜农场互助码 | 非必须 | / | 注意:京喜农场 种植种子发生变化的时候,互助码也会变!!
每个账号 shareCode 是一个 json,json 需要用单引号包裹且是一行字符串,
否则设置环境变量时会出错,示例:'{"smp":"22bdadsfaadsfadse8a","active":"jdnc_1_btorange210113_2","joinnum":"1"}',多账单间使用`&`或换行分开。 | | `JDNIAN_SHARECODES` | 炸年兽互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | | `JDSXSY_SHARECODES` | 京东神仙书院
互助码 | 非必须 | 20/5 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) | diff --git a/jdJxncShareCodes.js b/jdJxncShareCodes.js index 6ca30334..ea3b97ed 100644 --- a/jdJxncShareCodes.js +++ b/jdJxncShareCodes.js @@ -7,6 +7,11 @@ //云服务器腾讯云函数等NOde.js用户在此处填写京京喜农场的好友码。 // 同一个京东账号的好友助力码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例 // 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2 +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 注意:京喜农场 种植种子发生变化的时候,互助码也会变!! +// 每个账号 shareCdoe 是一个 json,示例如下 +// {"smp":"22bdadsfaadsfadse8a","active":"jdnc_1_btorange210113_2","joinnum":"1"} let JxncShareCodes = [ '',//账号一的好友shareCode,不同好友中间用@符号隔开 '',//账号二的好友shareCode,不同好友中间用@符号隔开 diff --git a/jd_get_share_code.js b/jd_get_share_code.js index c3be8886..98134298 100644 --- a/jd_get_share_code.js +++ b/jd_get_share_code.js @@ -321,12 +321,16 @@ function getJxNc(){ if (safeGet(data)) { data = JSON.parse(data); if (data["ret"] === 0) { - console.log(`【账号${$.index}(${$.nickName || $.UserName})京喜农场助力码】${data.smp}`); - if (data.active) { - console.log(`【账号${$.index}(${$.nickName || $.UserName})京喜农场active】${data.active}`); + let shareCodeJson = { + 'smp': data.smp, + 'active': data.active, + 'joinnum': data.joinnum, + }; + console.log(`注意:京喜农场 种植种子发生变化的时候,互助码也会变!!`); + console.log(`【账号${$.index}(${$.nickName || $.UserName})京喜农场】` + JSON.stringify(shareCodeJson)); } else { - console.log( `【账号${$.index}(${$.nickName || $.UserName})京喜农场】未选择种子,请先去京喜农场选择种子`); + console.log(`【账号${$.index}(${$.nickName || $.UserName})京喜农场】未选择种子,请先去京喜农场选择种子`); } } } else { diff --git a/jd_jxnc.js b/jd_jxnc.js index a1c3de79..adb19e69 100644 --- a/jd_jxnc.js +++ b/jd_jxnc.js @@ -45,7 +45,7 @@ let currentCookie = ''; // 当前用户 cookie let tokenNull = {'farm_jstoken': '', 'phoneid': '', 'timestamp': ''}; // 内置一份空的 token let tokenArr = []; // 用户 token 数组 let currentToken = {}; // 当前用户 token -const shareCode = '22bd6fbbabbaa770a45ab2607e7a1e8a@197c6094e965fdf3d33621b47719e0b1'; // 内置助力码 +let shareCode = ''; // 内置助力码 let jxncShareCodeArr = []; // 用户 助力码 数组 let currentShareCode = []; // 当前用户 要助力的助力码 const openUrl = `openjd://virtual?params=${encodeURIComponent('{ "category": "jump", "des": "m", "url": "https://wqsh.jd.com/sns/201912/12/jxnc/detail.html?ptag=7155.9.32&smp=b47f4790d7b2a024e75279f55f6249b9&active=jdnc_1_chelizi1205_2"}',)}`; // 打开京喜农场 @@ -106,9 +106,20 @@ let assistUserShareCode = 0; // 随机助力用户 share code $.done(); }) +// 检查互助码格式是否为 json +// 成功返回 json 对象,失败返回 '' +function changeShareCodeJson(code) { + try { + let json = code && JSON.parse(code); + return json['smp'] && json['active'] && json['joinnum'] ? json : ''; + } catch (e) { + return ''; + } +} + // 加载配置 cookie token shareCode function requireConfig() { - return new Promise(resolve => { + return new Promise(async resolve => { $.log('开始获取配置文件\n') notify = $.isNode() ? require('./sendNotify') : ''; //Node.js用户请在jdCookie.js处填写京东ck; @@ -142,13 +153,52 @@ function requireConfig() { Object.keys(jdJxncShareCodeNode).forEach((item) => { if (jdJxncShareCodeNode[item]) { jxncShareCodeArr.push(jdJxncShareCodeNode[item]) + } else { + jxncShareCodeArr.push(''); } }) } - // console.log(`jdFruitShareArr::${JSON.stringify(jdFruitShareArr)}`) - // console.log(`jdFruitShareArr账号长度::${jdFruitShareArr.length}`) + // 检查互助码是否为 json [smp,active,joinnum] 格式,否则进行通知 + for (let i = 0; i < jxncShareCodeArr.length; i++) { + if (jxncShareCodeArr[i]) { + let tmpjsonShareCodeArr = jxncShareCodeArr.splice('@'); + if (!changeShareCodeJson(tmpjsonShareCodeArr[0])) { + $.log('互助码格式已变更,请重新填写互助码'); + $.msg($.name, '互助码格式变更通知', '互助码格式变更,请重新填写 ‼️‼️', option); + if ($.isNode()) { + await notify.sendNotify(`${$.name}`, `互助码格式变更,请重新填写 ‼️‼️`); + } + } + break; + } + } + + // console.log(`jdFruitShareArr::${JSON.stringify(jxncShareCodeArr)}`) + // console.log(`jdFruitShareArr账号长度::${jxncShareCodeArr.length}`) $.log(`您提供了${jxncShareCodeArr.length}个账号的京喜农场助力码`); + + try { + let options = { + "url": `https://gitee.com/guyuexuan/jd_share_code/raw/master/share_code/jxnc.json`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36" + }, + "timeout": 10000, + } + $.get(options, (err, resp, data) => { // 初始化内置变量 + if (!err) { + shareCode = data; + } + }); + } catch (e) { + // 获取内置助力码失败 + } resolve() }) } @@ -233,8 +283,12 @@ async function jdJXNC() { notifyBool = true; message += `【成熟】水果已成熟请及时收取,deliverState:${startInfo.deliverState}\n`; } else { - $.log(`【京东账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】 ${$.info.smp}`); - $.log(`【京东账号${$.index}(${$.nickName || $.UserName})的${$.name}种子active】 ${$.info.active}`); + let shareCodeJson = { + "smp": $.info.smp, + "active": $.info.active, + "joinnum": $.info.joinnum, + }; + $.log(`【京东账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】` + JSON.stringify(shareCodeJson)); await $.wait(500); const isOk = await browserTask(); if (isOk) { @@ -249,10 +303,10 @@ async function jdJXNC() { if (next) { while ($.helpNum < $.maxHelpNum) { $.helpNum++; - assistUserShareCode = await getAssistUser(); - if (assistUserShareCode) { + assistUserShareCodeJson = await getAssistUser(); + if (assistUserShareCodeJson) { await $.wait(500); - next = await helpShareCode(assistUserShareCode); + next = await helpShareCode(assistUserShareCodeJson['smp'], assistUserShareCodeJson['active'], assistUserShareCodeJson['joinnum']); if (next) { await $.wait(1000); continue; @@ -420,7 +474,7 @@ function submitInviteId(userName) { try { $.post( { - url: `https://api.ninesix.cc/api/jx-nc/${$.info.smp}/${encodeURIComponent(userName)}?active=${$.info.active}`, + url: `https://api.ninesix.cc/api/jx-nc/${$.info.smp}/${encodeURIComponent(userName)}?active=${$.info.active}&joinnum=${$.info.joinnum}`, timeout: 10000 }, (err, resp, _data) => { @@ -450,10 +504,16 @@ function getAssistUser() { try { $.get({url: `https://api.ninesix.cc/api/jx-nc?active=${$.info.active}`, timeout: 10000}, async (err, resp, _data) => { try { - const {code, data = {}} = JSON.parse(_data); - if (data.value) { - $.log(`获取随机助力码成功 ${code} ${data.value}`); - resolve(data.value); + const {code, data: {value, extra = {}} = {}} = JSON.parse(_data); + if (value && extra.active) { // && extra.joinnum 截止 2021-01-22 16:39:09 API 线上还未部署新的 joinnum 参数代码,暂时默认 1 兼容 + let shareCodeJson = { + 'smp': value, + 'active': extra.active, + 'joinnum': extra.joinnum || 1 + }; + $.log(`获取随机助力码成功 ` + JSON.stringify(shareCodeJson)); + resolve(shareCodeJson); + return; } else { $.log(`获取随机助力码失败 ${code}`); } @@ -477,7 +537,12 @@ async function helpFriends() { if (!code) { continue } - const next = await helpShareCode(code); + let tmpShareCodeJson = changeShareCodeJson(code); + if (!tmpShareCodeJson) { //非 json 格式跳过 + console.log('助力码非 json 格式,跳过') + continue; + } + const next = await helpShareCode(tmpShareCodeJson['smp'], tmpShareCodeJson['active'], tmpShareCodeJson['joinnum']); if (!next) { return false; } @@ -487,15 +552,15 @@ async function helpFriends() { } // 执行助力 return true 继续助力 false 助力结束 -function helpShareCode(code) { +function helpShareCode(smp, active, joinnum) { return new Promise(async resolve => { - if (code === $.info.smp) { // 自己的助力码,跳过,继续执行 + if (smp === $.info.smp) { // 自己的助力码,跳过,继续执行 $.log('助力码与当前账号相同,跳过助力。准备进行下一个助力'); resolve(true); } - $.log(`即将助力 share code:${code}`); + $.log(`即将助力 share {"smp":"${smp}","active":"${active}","joinnum":"${joinnum}"}`); $.get( - taskUrl('help', `active=${$.info.active}&joinnum=${$.info.joinnum}&smp=${code}`), + taskUrl('help', `active=${active}&joinnum=${joinnum}&smp=${smp}`), async (err, resp, data) => { try { const res = data.match(/try\{whyour\(([\s\S]*)\)\;\}catch\(e\)\{\}/)[1]; @@ -504,10 +569,16 @@ function helpShareCode(code) { // ret=0 助力成功 // ret=1021 cannot help self 不能助力自己 // ret=1011 active 不同 - if (ret === 0 || ret === 1021 || ret === 1011) { // 0 助力成功 + // ret=1009 retmsg="today has help p2p" 今天已助力过 + if (ret === 0 || ret === 1009 || ret === 1021 || ret === 1011) { // 0 助力成功 resolve(true); + return; } // ret 1016 助力上限 + // ret 147 filter 当前账号黑号了 + if (ret === 147) { + $.log(`\n\n !!!!!!!! 当前账号黑号了 !!!!!!!! \n\n`); + } } catch (e) { $.logErr(e, resp); } finally {