From 6c8116cf37931a4d573bed3e8f3a91dfce8b0e81 Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Wed, 17 Mar 2021 16:44:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E5=85=91=E6=8D=A2?= =?UTF-8?q?=E5=A5=96=E5=93=81=E4=B8=8D=E6=A0=A1=E9=AA=8Cck=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E8=BF=87=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jd_blueCoin.js | 197 +++++++++++++++++++++++++-------------------- jd_car_exchange.js | 7 +- 2 files changed, 112 insertions(+), 92 deletions(-) diff --git a/jd_blueCoin.js b/jd_blueCoin.js index fcc5197d..f81b0206 100644 --- a/jd_blueCoin.js +++ b/jd_blueCoin.js @@ -25,7 +25,7 @@ const notify = $.isNode() ? require('./sendNotify') : ''; let allMessage = ''; //Node.js用户请在jdCookie.js处填写京东ck; const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; -let coinToBeans = $.getdata('coinToBeans') || 20; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认兑换20京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 +let coinToBeans = $.getdata('coinToBeans') || 0; //兑换多少数量的京豆(20或者1000),0表示不兑换,默认不兑换京豆,如需兑换把0改成20或者1000,或者'商品名称'(商品名称放到单引号内)即可 let jdNotify = false;//是否开启静默运行,默认false关闭(即:奖品兑换成功后会发出通知提示) //IOS等用户直接用NobyDa的jd cookie let cookiesArr = [], cookie = ''; @@ -60,14 +60,14 @@ const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; //console.log($.coincount); $.isLogin = true; $.nickName = ''; - await TotalBean(); - console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); - console.log(`目前暂无兑换酒类的奖品功能,即使输入酒类名称,脚本也会提示下架\n`) + // await TotalBean(); + console.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + // console.log(`目前暂无兑换酒类的奖品功能,即使输入酒类名称,脚本也会提示下架\n`) if (!$.isLogin) { $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); if ($.isNode()) { - await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName || $.UserName}\n请重新登录获取cookie`); } continue } @@ -82,7 +82,7 @@ const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; await smtgHome();//查询蓝币数量,是否满足兑换的条件 await PrizeIndex(); } else { - console.log('查询到您设置的是不兑换京豆选项,现在为您跳过兑换京豆。如需兑换,请去BoxJs设置或者修改脚本coinToBeans\n') + console.log('查询到您设置的是不兑换京豆选项,现在为您跳过兑换京豆。如需兑换,请去BoxJs设置或者修改脚本coinToBeans或设置环境变量MARKET_COIN_TO_BEANS\n') } await msgShow(); } catch (e) { @@ -97,96 +97,109 @@ const JD_API_HOST = `https://api.m.jd.com/api?appid=jdsupermarket`; .catch((e) => $.logErr(e)) .finally(() => $.done()) async function PrizeIndex() { - await smtg_queryPrize(); + // await smtg_queryPrize(); // await smtg_materialPrizeIndex();//兑换酒类奖品,此兑换API与之前的兑换京豆类的不一致,故目前无法进行 - // const prizeList = [...$.queryPrizeData, ...$.materialPrizeIndex]; - const prizeList = [...$.queryPrizeData]; - if (`${coinToBeans}` === '1000') { - if (prizeList[1] && prizeList[1].beanType === 'BeanPackage') { - console.log(`查询换${prizeList[1].title}ID成功,ID:${prizeList[1].prizeId}`) - $.title = prizeList[1].title; - $.blueCost = prizeList[1].blueCost; - } else { - console.log(`查询换1000京豆ID失败`) - $.beanerr = `东哥今天不给换`; - return ; - } - if (prizeList[1] && prizeList[1].inStock === 506) { - $.beanerr = `失败,1000京豆领光了,请明天再来`; - return ; - } - if (prizeList[1] && prizeList[1].targetNum === prizeList[1] && prizeList[1].finishNum) { - $.beanerr = `${prizeList[1].subTitle}`; - return ; - } - //兑换1000京豆 - if ($.totalBlue > $.blueCost) { - await smtg_obtainPrize(prizeList[1].prizeId); - } else { - console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); - $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; - } - } else if (`${coinToBeans}` === '20') { - if (prizeList[0] && prizeList[0].beanType === 'Bean') { - console.log(`查询换${prizeList[0].title}ID成功,ID:${prizeList[0].prizeId}`) - $.title = prizeList[0].title; - $.blueCost = prizeList[0].blueCost; - } else { - console.log(`查询换万能的京豆ID失败`) - $.beanerr = `东哥今天不给换`; - return ; - } - if (prizeList[0] && prizeList[0].inStock === 506) { - console.log(`失败,万能的京豆领光了,请明天再来`); - $.beanerr = `失败,万能的京豆领光了,请明天再来`; - return ; - } - if ((prizeList[0] && prizeList[0].targetNum) === (prizeList[0] && prizeList[0].finishNum)) { - $.beanerr = `${prizeList[0].subTitle}`; - return ; - } - //兑换万能的京豆(1-20京豆) - if ($.totalBlue > $.blueCost) { - await smtg_obtainPrize(prizeList[0].prizeId,1000); - } else { - console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); - $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; - } - } else { - //自定义输入兑换 - let prizeId = '', i; - for (let index = 0; index < prizeList.length; index ++) { - if (prizeList[index].title.indexOf(coinToBeans) > -1) { - prizeId = prizeList[index].prizeId; - i = index; - $.title = prizeList[index].title; - $.blueCost = prizeList[index].blueCost; - } - } - if (prizeId) { - if (prizeList[i].inStock === 506 || prizeList[i].inStock === -1) { - console.log(`失败,您输入设置的${coinToBeans}领光了,请明天再来`); - $.beanerr = `失败,您输入设置的${coinToBeans}领光了,请明天再来`; + await Promise.all([ + smtg_queryPrize(), + smtg_materialPrizeIndex() + ]) + const prizeList = [...$.queryPrizeData, ...$.materialPrizeIndex]; + // const prizeList = [...$.queryPrizeData]; + if (prizeList && prizeList.length) { + if (`${coinToBeans}` === '1000') { + if (prizeList[1] && prizeList[1].beanType === 'BeanPackage') { + console.log(`查询换${prizeList[1].title}ID成功,ID:${prizeList[1].prizeId}`) + $.title = prizeList[1].title; + $.blueCost = prizeList[1].blueCost; + } else { + console.log(`查询换1000京豆ID失败`) + $.beanerr = `东哥今天不给换`; return ; } - if ((prizeList[i].targetNum) && prizeList[i].targetNum === prizeList[i].finishNum) { + if (prizeList[1] && prizeList[1].inStock === 506) { + $.beanerr = `失败,1000京豆领光了,请明天再来`; + return ; + } + if (prizeList[1] && prizeList[1].targetNum === prizeList[1] && prizeList[1].finishNum) { + $.beanerr = `${prizeList[1].subTitle}`; + return ; + } + //兑换1000京豆 + if ($.totalBlue > $.blueCost) { + await smtg_obtainPrize(prizeList[1].prizeId); + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else if (`${coinToBeans}` === '20') { + if (prizeList[0] && prizeList[0].beanType === 'Bean') { + console.log(`查询换${prizeList[0].title}ID成功,ID:${prizeList[0].prizeId}`) + $.title = prizeList[0].title; + $.blueCost = prizeList[0].blueCost; + } else { + console.log(`查询换万能的京豆ID失败`) + $.beanerr = `东哥今天不给换`; + return ; + } + if (prizeList[0] && prizeList[0].inStock === 506) { + console.log(`失败,万能的京豆领光了,请明天再来`); + $.beanerr = `失败,万能的京豆领光了,请明天再来`; + return ; + } + if ((prizeList[0] && prizeList[0].targetNum) === (prizeList[0] && prizeList[0].finishNum)) { $.beanerr = `${prizeList[0].subTitle}`; return ; } + //兑换万能的京豆(1-20京豆) if ($.totalBlue > $.blueCost) { - await smtg_obtainPrize(prizeId); + await smtg_obtainPrize(prizeList[0].prizeId,1000); } else { console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; } } else { - console.log(`奖品兑换列表[${coinToBeans}]已下架,请检查APP是否存在此商品,如存在请检查您的输入是否正确`); - $.beanerr = `奖品兑换列表[${coinToBeans}]已下架`; + //自定义输入兑换 + let prizeId = '', i; + for (let index = 0; index < prizeList.length; index ++) { + if (prizeList[index].title.indexOf(coinToBeans) > -1) { + prizeId = prizeList[index].prizeId; + i = index; + $.title = prizeList[index].title; + $.blueCost = prizeList[index].blueCost; + $.type = prizeList[index].type; + $.beanType = prizeList[index].hasOwnProperty('beanType'); + } + } + if (prizeId) { + if (prizeList[i].inStock === 506 || prizeList[i].inStock === -1) { + console.log(`失败,您输入设置的${coinToBeans}领光了,请明天再来`); + $.beanerr = `失败,您输入设置的${coinToBeans}领光了,请明天再来`; + return ; + } + if ((prizeList[i].targetNum) && prizeList[i].targetNum === prizeList[i].finishNum) { + $.beanerr = `${prizeList[0].subTitle}`; + return ; + } + if ($.totalBlue > $.blueCost) { + if ($.type === 4 && !$.beanType) { + await smtg_obtainPrize(prizeId, 0, "smtg_lockMaterialPrize") + } else { + await smtg_obtainPrize(prizeId); + } + } else { + console.log(`兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`); + $.beanerr = `兑换失败,您目前蓝币${$.totalBlue}个,不足以兑换${$.title}所需的${$.blueCost}个`; + } + } else { + console.log(`奖品兑换列表[${coinToBeans}]已下架,请检查APP是否存在此商品,如存在请检查您的输入是否正确`); + $.beanerr = `奖品兑换列表[${coinToBeans}]已下架`; + } } } } //查询白酒类奖品列表API function smtg_materialPrizeIndex(timeout = 0) { + $.materialPrizeIndex = []; return new Promise((resolve) => { setTimeout( ()=>{ let url = { @@ -223,6 +236,7 @@ function smtg_materialPrizeIndex(timeout = 0) { } //查询任务 function smtg_queryPrize(timeout = 0){ + $.queryPrizeData = []; return new Promise((resolve) => { setTimeout( ()=>{ let url = { @@ -242,8 +256,9 @@ function smtg_queryPrize(timeout = 0){ try { if (safeGet(data)) { data = JSON.parse(data); - $.queryPrizeData = data; + // $.queryPrizeData = data; if (data.data.bizCode !== 0) { + console.log(`${data.data.bizMsg}\n`) $.beanerr = `${data.data.bizMsg}`; return } @@ -262,12 +277,16 @@ function smtg_queryPrize(timeout = 0){ }) } //换京豆 -function smtg_obtainPrize(prizeId, timeout = 0) { +function smtg_obtainPrize(prizeId, timeout = 0, functionId = 'smtg_obtainPrize') { //1000京豆,prizeId为4401379726 + const body = { + prizeId, + "channel": "1" + } return new Promise((resolve) => { setTimeout( ()=>{ let url = { - url : `${JD_API_HOST}&functionId=smtg_obtainPrize&clientVersion=8.0.0&client=m&body=%7B%22prizeId%22:%22${prizeId}%22%7D&t=${Date.now()}`, + url : `${JD_API_HOST}&functionId=${functionId}&clientVersion=8.0.0&client=m&body=${encodeURIComponent(JSON.stringify(body))}&t=${Date.now()}`, headers : { 'Origin' : `https://jdsupermarket.jd.com`, 'Cookie' : cookie, @@ -298,15 +317,15 @@ function smtg_obtainPrize(prizeId, timeout = 0) { if ($.data.data.bizCode === 0) { if (`${coinToBeans}` === '1000') { $.beanscount ++; - console.log(`【京东账号${$.index}】${$.nickName} 第${$.data.data.result.exchangeNum}次换${$.title}成功`) + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.exchangeNum}次换${$.title}成功`) if ($.beanscount === 1) return; } else if (`${coinToBeans}` === '20') { $.beanscount ++; - console.log(`【京东账号${$.index}】${$.nickName} 第${$.data.data.result.exchangeNum}次换${$.title}成功`) + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.exchangeNum}次换${$.title}成功`) if ($.data.data.result.exchangeNum === 20 || $.beanscount === coinToBeans || $.data.data.result.blue < 500) return; } else { $.beanscount ++; - console.log(`【京东账号${$.index}】${$.nickName} 第${$.data.data.result.exchangeNum}次换${$.title}成功`) + console.log(`【京东账号${$.index}】${$.nickName || $.UserName} 第${$.data.data.result.exchangeNum}次换${$.title}成功`) if ($.beanscount === 1) return; } } @@ -335,7 +354,7 @@ function smtgHome() { const { result } = data.data; $.totalGold = result.totalGold; $.totalBlue = result.totalBlue; - console.log(`【总金币】${$.totalGold}个\n`); + // console.log(`【总金币】${$.totalGold}个\n`); console.log(`【总蓝币】${$.totalBlue}个\n`); } } @@ -353,7 +372,7 @@ function smtgHome() { function msgShow() { // $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【收取蓝币】${$.coincount ? `${$.coincount}个` : $.coinerr }${coinToBeans ? `\n【兑换京豆】${ $.beanscount ? `${$.beanscount}个` : $.beanerr}` : ""}`); return new Promise(async resolve => { - $.log(`\n【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功` : $.beanerr}` : "您设置的是不兑换奖品"}\n`); + $.log(`\n【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功` : $.beanerr}` : "您设置的是不兑换奖品"}\n`); if ($.isNode() && process.env.MARKET_REWARD_NOTIFY) { $.ctrTemp = `${process.env.MARKET_REWARD_NOTIFY}` === 'false'; } else if ($.getdata('jdSuperMarketRewardNotify')) { @@ -363,8 +382,8 @@ function msgShow() { } //默认只在兑换奖品成功后弹窗提醒。情况情况加,只打印日志,不弹窗 if ($.beanscount && $.ctrTemp) { - $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${ $.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); - allMessage += `【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}${$.index !== cookiesArr.length ? '\n\n' : ''}` + $.msg($.name, ``, `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${ $.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`); + allMessage += `【京东账号${$.index}】${$.nickName || $.UserName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}${$.index !== cookiesArr.length ? '\n\n' : ''}` // if ($.isNode()) { // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${coinToBeans ? `【兑换${$.title}】${$.beanscount ? `成功,数量:${$.beanscount}个` : $.beanerr}` : "您设置的是不兑换奖品"}`) // } diff --git a/jd_car_exchange.js b/jd_car_exchange.js index edfb7995..93ef17c3 100644 --- a/jd_car_exchange.js +++ b/jd_car_exchange.js @@ -54,7 +54,7 @@ const JD_API_HOST = 'https://car-member.jd.com/api/'; cookie = cookiesArr[i]; $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) $.index = i + 1; - console.log(`京东账号${$.index} ${$.UserName}`) + console.log(`*********京东账号${$.index} ${$.UserName}*********`) $.isLogin = true; $.nickName = ''; message = ''; @@ -85,11 +85,12 @@ function exchange() { $.post(taskUrl('v1/user/exchange/bean'), (err, resp, data) => { try { if (err) { - data = JSON.parse(resp.body) + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} user/exchange/bean API请求失败,请检查网路重试\n`) } else { if (safeGet(data)) { data = JSON.parse(data); - console.log(`兑换结果:${JSON.stringify(data)}`) + console.log(`兑换结果:${JSON.stringify(data)}\n`) } } } catch (e) {