东东工厂上线随机互助功能,secret/环境变量DDFACTORY_SHARECODES 规则和种豆农场等等一样

This commit is contained in:
lxk0301
2020-11-26 15:12:12 +08:00
parent 7d06cc94a0
commit 7e01b4b610
2 changed files with 106 additions and 5 deletions

31
jdFactoryShareCodes.js Normal file
View File

@ -0,0 +1,31 @@
/*
京东种豆得豆互助码
此文件为Node.js专用。其他用户请忽略
支持京东N个账号
*/
//云服务器腾讯云函数等NOde.js用户在此处填写东东萌宠的好友码。
// github action用户的好友互助码填写到Action->Settings->Secrets->new Secret里面(Name填写 PLANT_BEAN_SHARECODES(此处的Name必须按此来写,不能随意更改),内容处填写互助码,填写规则如下)
// 同一个京东账号的好友互助码用@符号隔开,不同京东账号之间用&符号或者换行隔开,下面给一个示例
// 如: 京东账号1的shareCode1@京东账号1的shareCode2&京东账号2的shareCode1@京东账号2的shareCode2
let shareCodes = [
'',//账号一的好友shareCode,不同好友中间用@符号隔开
'',//账号二的好友shareCode不同好友中间用@符号隔开
]
// 判断github action里面是否有东东萌宠互助码
if (process.env.DDFACTORY_SHARECODES) {
if (process.env.DDFACTORY_SHARECODES.indexOf('&') > -1) {
console.log(`您的互助码选择的是用&隔开\n`)
shareCodes = process.env.DDFACTORY_SHARECODES.split('&');
} else if (process.env.DDFACTORY_SHARECODES.indexOf('\n') > -1) {
console.log(`您的互助码选择的是用换行隔开\n`)
shareCodes = process.env.DDFACTORY_SHARECODES.split('\n');
} else {
shareCodes = process.env.DDFACTORY_SHARECODES.split();
}
} else if (process.env.JD_COOKIE) {
console.log(`由于您secret里面未提供助力码故此处运行将会给脚本内置的码进行助力请知晓`)
}
for (let i = 0; i < shareCodes.length; i++) {
const index = (i + 1 === 1) ? '' : (i + 1);
exports['shareCodes' + index] = shareCodes[i];
}

View File

@ -34,6 +34,7 @@ const notify = $.isNode() ? require('./sendNotify') : '';
//Node.js用户请在jdCookie.js处填写京东ck;
const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
let jdNotify = true;//是否关闭通知false打开通知推送true关闭通知推送
const randomCount = $.isNode() ? 20 : 5;
//IOS等用户直接用NobyDa的jd cookie
let cookiesArr = [], cookie = '', message;
if ($.isNode()) {
@ -48,6 +49,7 @@ let wantProduct = ``;//心仪商品名称
const JD_API_HOST = 'https://api.m.jd.com/client.action';
const inviteCodes = [`P04z54XCjVWnYaS5u2ak7ZCdan1Bdd2GGiWvC6_uERj`, 'P04z54XCjVWnYaS5m9cZ2ariXVJwHf0bgkG7Uo'];
!(async () => {
await requireConfig();
if (!cookiesArr[0]) {
$.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"});
return;
@ -72,6 +74,7 @@ const inviteCodes = [`P04z54XCjVWnYaS5u2ak7ZCdan1Bdd2GGiWvC6_uERj`, 'P04z54XCjVW
}
continue
}
await shareCodesFormat();
await jdFactory()
}
}
@ -84,7 +87,7 @@ const inviteCodes = [`P04z54XCjVWnYaS5u2ak7ZCdan1Bdd2GGiWvC6_uERj`, 'P04z54XCjVW
})
async function jdFactory() {
await jdfactory_getHomeData();
await helpFriends(inviteCodes);
await helpFriends();
// $.newUser !==1 && $.haveProduct === 2老用户但未选购商品
// $.newUser === 1新用户
if ($.newUser === 1) return
@ -210,10 +213,14 @@ async function algorithm() {
})
})
}
async function helpFriends(inviteCodes) {
for (let code of inviteCodes) {
async function helpFriends() {
for (let code of $.newShareCodes) {
if (!code) continue
await jdfactory_collectScore(code);
const helpRes = await jdfactory_collectScore(code);
if (helpRes.code === 0 && helpRes.data.bizCode === -7) {
console.log(`助力机会已耗尽,跳出`);
break
}
}
}
async function doTask() {
@ -335,7 +342,7 @@ function jdfactory_collectScore(taskToken) {
} catch (e) {
$.logErr(e, resp)
} finally {
resolve();
resolve(data);
}
})
})
@ -531,6 +538,69 @@ function jdfactory_getHomeData() {
})
})
}
function readShareCode() {
console.log(`开始`)
return new Promise(async resolve => {
$.get({url: `http://api.turinglabs.net/api/v1/jd/ddfactory/read/${randomCount}/`}, (err, resp, data) => {
try {
if (err) {
console.log(`${JSON.stringify(err)}`)
console.log(`${$.name} API请求失败请检查网路重试`)
} else {
if (data) {
console.log(`随机取个${randomCount}码放到您固定的互助码后面`)
data = JSON.parse(data);
}
}
} catch (e) {
$.logErr(e, resp)
} finally {
resolve(data);
}
})
// await $.wait(2000);
// resolve()
})
}
//格式化助力码
function shareCodesFormat() {
return new Promise(async resolve => {
// console.log(`第${$.index}个京东账号的助力码:::${$.shareCodesArr[$.index - 1]}`)
$.newShareCodes = [];
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].split('@');
}
const readShareCodeRes = await readShareCode();
if (readShareCodeRes && readShareCodeRes.code === 200) {
$.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])];
}
console.log(`${$.index}个京东账号将要助力的好友${JSON.stringify($.newShareCodes)}`)
resolve();
})
}
function requireConfig() {
return new Promise(resolve => {
console.log(`开始获取${$.name}配置文件\n`);
//Node.js用户请在jdCookie.js处填写京东ck;
const shareCodes = $.isNode() ? require('./jdFactoryShareCodes.js') : '';
console.log(`${cookiesArr.length}个京东账号\n`)
if ($.isNode()) {
$.shareCodesArr = [];
Object.keys(shareCodes).forEach((item) => {
if (shareCodes[item]) {
$.shareCodesArr.push(shareCodes[item])
}
})
}
// console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`);
console.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`);
resolve()
})
}
function taskPostUrl(function_id, body = {}, function_id2) {
let url = `${JD_API_HOST}`;
if (function_id2) {