今天看jd-base脚本中的日志,发现有些项目我自己没有提供互助码,脚本会自动去助力作者的互助码。然而有些项目的互助码是每日变化的,根本没有可以在配置文件内去设置我自己的互助码。所以决定修改脚本实现自动记录和查询我自己账号的互助码,以方便我自己的几个号互相助力。
首先修改手机狂欢城的脚本,有2个文件,分别是jd_carnivalcity.js
,jd_carnivalcity_help.js
。
jd_carnivalcity.js
是执行狂欢城任务的,会获取到自己的互助码。jd_carnivalcity_help.js
是专门做互助任务的,需要我提供互助码。
jd-base的脚本代码文件都在容器内的/jd/scripts/
文件夹内。
为了方便修改脚本文件,我修改了一下jd-base.sh
这个文件,把docker容器的/jd/scripts/
目录映射到了宿主机。
jd_carnivalcity.js
在第521
行(函数getHelp
内)下面添加一行代码,用于把获取到的自己的互助码提交到我开发的一个网站接口:
//获取邀请码API
function getHelp() {
return new Promise(resolve => {
const body = {"apiMapping":"/khc/task/getSupport"}
$.get(taskUrl(body), async (err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败,请检查网路重试`)
} else {
data = JSON.parse(data);
if (data.code === 200) {
console.log(`\n\n${$.name}互助码每天都变化,旧的不可继续使用`);
$.log(`【京东账号${$.index}(${$.UserName})的${$.name}好友互助码】${data.data.shareId}\n\n`);
//新增代码:提交互助码
$.get({url: `http://data.****.com/jd.php?s=/Jd/code_khc/opt/save/username/${$.UserName}/code_type/${$.name}/code/${data.data.shareId}/delete_pre/yes/`,headers: {'Host': 'data.****.com'}},async (err ,resp, data) => {}
);
$.temp.push(data.data.shareId);
} else {
console.log(`获取邀请码失败:${JSON.stringify(data)}`);
if (data.code === 1002) $.blockAccount = true;
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
})
})
}
jd_carnivalcity_help.js
在第243
行下面(函数shareCodesFormat
内)添加代码获取自己的互助码列表:
//格式化助力码
function shareCodesFormat() {
return new Promise(async resolve => {
// console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`)
$.newShareCodes = [];
//新增获取互助码
$.shareCodesArr[$.index - 1]=$.get({url: `http://data.****.com/jd.php?s=/Jd/code_khc/opt/get/code_type/${$.name}/`,headers: {'Host': 'data.****.com'}});
if ($.shareCodesArr[$.index - 1]) {
$.newShareCodes = $.shareCodesArr[$.index - 1].split('@');
} else {
console.log(`由于您第${$.index}个京东账号未提供shareCode,将采纳本脚本自带的助力码\n`)
const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1);
$.newShareCodes = inviteCodes[tempIndex] && inviteCodes[tempIndex].split('@') || [];
if ($.updatePkActivityIdRes && $.updatePkActivityIdRes.length) $.newShareCodes = [...$.updatePkActivityIdRes, ...$.newShareCodes];
}
// const readShareCodeRes = await readShareCode();
// if (readShareCodeRes && readShareCodeRes.code === 200) {
// $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])];
// }
// console.log(`第${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`)
resolve();
})
}
东东工厂的脚本文件是jd_jdfactory.js
,第452行(jdfactory_getTaskDetail
函数内)增加提交互助码的代码。
437 //获取任务列表
438 function jdfactory_getTaskDetail() {
439 return new Promise(resolve => {
440 $.post(taskPostUrl("jdfactory_getTaskDetail", {}, "jdfactory_getTaskDetail"), async (err, resp, data) => {
441 try {
442 if (err) {
443 console.log(`${JSON.stringify(err)}`)
444 console.log(`${$.name} API请求失败,请检查网路重试`)
445 } else {
446 if (safeGet(data)) {
447 data = JSON.parse(data);
448 if (data.data.bizCode === 0) {
449 $.taskVos = data.data.result.taskVos;//任务列表
450 $.taskVos.map(item => {
451 if (item.taskType === 14) {
452 console.log(`\n【京东账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${item.assistTaskDetailVo.taskToken}\n`);
453 //新增代码:提交互助码
454 $.get({url: `http://data.***.**/jd.php?s=/Jd/code_khc/opt/save/username/${$.UserName}/code_type/${$.name}/code/${item.assistTaskDetailVo.taskToken}/delete_pre/yes/`,headers: {'Host':'data.***.**'}});
455 }
456 })
457 }
458 }
459 }
460 } catch (e) {
461 $.logErr(e, resp)
462 } finally {
463 resolve();
464 }
465 })
466 })
467 }