Merge pull request #202 from FanchangWang/master

[京喜农场] 修复 助力 ret=1011 错误,环境变量配置有参数格式变更
This commit is contained in:
LXK9301
2021-01-22 20:26:59 +08:00
committed by GitHub
4 changed files with 105 additions and 25 deletions

View File

@ -47,7 +47,7 @@
| `JDJOY_SHARECODES` | 疯狂的JOY互助码 | 非必须 | 6/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
| `BOOKSHOP_SHARECODES` | 京东书店互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
| `JD_CASH_SHARECODES` | 签到领现金互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
| `JXNC_SHARECODES` | 京喜农场互助码 | 非必须 | / | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
| `JXNC_SHARECODES` | 京喜农场互助码 | 非必须 | / | 注意:京喜农场 种植种子发生变化的时候,互助码也会变!!<br>每个账号 shareCode 是一个 jsonjson 需要用单引号包裹且是一行字符串,<br>否则设置环境变量时会出错,示例:'{"smp":"22bdadsfaadsfadse8a","active":"jdnc_1_btorange210113_2","joinnum":"1"}',多账单间使用`&`或换行分开。 |
| `JDNIAN_SHARECODES` | 炸年兽互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
| `JDSXSY_SHARECODES` | 京东神仙书院<br>互助码 | 非必须 | 20/5 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |

View File

@ -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不同好友中间用@符号隔开

View File

@ -321,10 +321,14 @@ 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})京喜农场】未选择种子,请先去京喜农场选择种子`);
}

View File

@ -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 {