-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #189 from QQ515237330/patch-1
新增[京东白条]:每日+周五领白条券
- Loading branch information
Showing
1 changed file
with
92 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
|
||
|
||
/* | ||
[task_local] | ||
# 京东金融领白条券 9点执行(周五券要9点开始领) | ||
0 9 * * * JD_BaiTiao.js | ||
*/ | ||
const $ = new Env('天天领白条券'); | ||
const Key = '';//单引号内自行填写您抓取的京东Cookie | ||
//直接用NobyDa的jd cookie | ||
const cookie = Key ? Key : $.getdata('CookieJD'); | ||
const JR_API_HOST = 'https://jrmkt.jd.com/activity/newPageTake/takePrize'; | ||
|
||
const Prize = { | ||
//每周五领55-5券 每月两次 | ||
PrizeFriday :{ Id : `Q96200731141823255924Qy`, Body : `activityId=Q96200731141823255924Qy&eid=4NCPNCJW746YAZQW6X7FBOXQW5XSZU2QLEKSFJARZS7ZP2ZDYWDRC2NG3WCBI6UZKQ54W5VKU7QAPA2IX7K4BZ24LE&fp=1be74839b572280deb0550b5f46d4a3b`}, | ||
//每日领随机白条券 | ||
PrizeDaily : {Id : `Q229326314441137002k96C`, Body :`activityId=Q229326314441137002k96C&eid=4NCPNCJW746YAZQW6X7FBOXQW5XSZU2QLEKSFJARZS7ZP2ZDYWDRC2NG3WCBI6UZKQ54W5VKU7QAPA2IX7K4BZ24LE&fp=68dcc2c6d938eab6c4aac7418be1aaba`} | ||
} | ||
|
||
!(async () => { | ||
if (!cookie) { | ||
$.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); | ||
return; | ||
} | ||
$.Prize = {}; | ||
var date=new Date(); | ||
await takePrize(Prize.PrizeDaily.Body,"PrizeDaily","天天领"); | ||
if (date.getDay() == 5 ) await takePrize(Prize.PrizeFriday.Body,"PrizeFriday","周五领"); | ||
//await takePrize(Prize.PrizeFriday.Body,"PrizeFriday","周五领"); | ||
await msgShow(); | ||
})() | ||
.catch((e) => { | ||
$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') | ||
}) | ||
.finally(() => { | ||
$.done(); | ||
}) | ||
|
||
|
||
function takePrize(body,PrizeName,Desc) { | ||
return new Promise((resolve) => { | ||
let url = { | ||
url: JR_API_HOST, | ||
body : body, | ||
headers: { | ||
'Cookie' : cookie, | ||
'X-Requested-With' : `XMLHttpRequest`, | ||
'Accept' : `application/json, text/javascript, */*; q=0.01`, | ||
'Origin' : `https://jrmkt.jd.com`, | ||
'Accept-Encoding' : `gzip, deflate, br`, | ||
'Content-Type' : `application/x-www-form-urlencoded;charset=UTF-8`, | ||
'Host' : `jrmkt.jd.com`, | ||
'Connection' : `keep-alive`, | ||
'Referer' : `https://jrmkt.jd.com/ptp/wl/vouchers.html?activityId=${Prize[PrizeName].Id}`, | ||
'Accept-Language' : `zh-cn` | ||
} | ||
} | ||
$.post(url, (err, resp, data) => { | ||
try { | ||
data = JSON.parse(data); | ||
if (data.respCode == "00001" ) | ||
{ | ||
$.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); | ||
return; | ||
} | ||
$.Prize[PrizeName] = data; | ||
$.Prize[PrizeName].Desc = Desc; | ||
} catch (e) { | ||
$.logErr(e, resp); | ||
} finally { | ||
resolve() | ||
} | ||
}) | ||
}) | ||
} | ||
|
||
function msgShow() { | ||
for (var i in $.Prize) { | ||
if (typeof($.message) == "undefined") $.message = `用户名【${$.Prize[i].nickName}】\n`; | ||
if ($.Prize[i].respCode === "00000") { | ||
$.message += `${$.Prize[i].Desc}:${$.Prize[i].prizeModels[0].prizeName + $.Prize[i].prizeModels[0].prizeAward}\n`; | ||
} | ||
else { | ||
$.message += `${$.Prize[i].Desc}:${typeof($.Prize[i].failDesc) == "undefined" ? $.Prize[i].respDesc : $.Prize[i].failDesc}\n`; | ||
} | ||
} | ||
$.msg($.name, '', `${$.message.substr(0,$.message.length - 1)}`); | ||
} | ||
|
||
|
||
function Env(t,s){return new class{constructor(t,s){this.name=t,this.data=null,this.dataFile="box.dat",this.logs=[],this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,s),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}getScript(t){return new Promise(s=>{$.get({url:t},(t,e,i)=>s(i))})}runScript(t,s){return new Promise(e=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let o=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");o=o?1*o:20,o=s&&s.timeout?s.timeout:o;const[h,a]=i.split("@"),r={url:`http://${a}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:o},headers:{"X-Key":h,Accept:"*/*"}};$.post(r,(t,s,i)=>e(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s);if(!e&&!i)return{};{const i=e?t:s;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),s=this.path.resolve(process.cwd(),this.dataFile),e=this.fs.existsSync(t),i=!e&&this.fs.existsSync(s),o=JSON.stringify(this.data);e?this.fs.writeFileSync(t,o):i?this.fs.writeFileSync(s,o):this.fs.writeFileSync(t,o)}}lodash_get(t,s,e){const i=s.replace(/\[(\d+)\]/g,".$1").split(".");let o=t;for(const t of i)if(o=Object(o)[t],void 0===o)return e;return o}lodash_set(t,s,e){return Object(t)!==t?t:(Array.isArray(s)||(s=s.toString().match(/[^.[\]]+/g)||[]),s.slice(0,-1).reduce((t,e,i)=>Object(t[e])===t[e]?t[e]:t[e]=Math.abs(s[i+1])>>0==+s[i+1]?[]:{},t)[s[s.length-1]]=e,t)}getdata(t){let s=this.getval(t);if(/^@/.test(t)){const[,e,i]=/^@(.*?)\.(.*?)$/.exec(t),o=e?this.getval(e):"";if(o)try{const t=JSON.parse(o);s=t?this.lodash_get(t,i,""):s}catch(t){s=""}}return s}setdata(t,s){let e=!1;if(/^@/.test(s)){const[,i,o]=/^@(.*?)\.(.*?)$/.exec(s),h=this.getval(i),a=i?"null"===h?null:h||"{}":"{}";try{const s=JSON.parse(a);this.lodash_set(s,o,t),e=this.setval(JSON.stringify(s),i)}catch(s){const h={};this.lodash_set(h,o,t),e=this.setval(JSON.stringify(h),i)}}else e=$.setval(t,s);return e}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,s){return this.isSurge()||this.isLoon()?$persistentStore.write(t,s):this.isQuanX()?$prefs.setValueForKey(t,s):this.isNode()?(this.data=this.loaddata(),this.data[s]=t,this.writedata(),!0):this.data&&this.data[s]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,s=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?$httpClient.get(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)}):this.isQuanX()?$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,s)=>{try{const e=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(e,null),s.cookieJar=this.ckjar}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t)))}post(t,s=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),delete t.headers["Content-Length"],this.isSurge()||this.isLoon())$httpClient.post(t,(t,e,i)=>{!t&&e&&(e.body=i,e.statusCode=e.status),s(t,e,i)});else if(this.isQuanX())t.method="POST",$task.fetch(t).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t));else if(this.isNode()){this.initGotEnv(t);const{url:e,...i}=t;this.got.post(e,i).then(t=>{const{statusCode:e,statusCode:i,headers:o,body:h}=t;s(null,{status:e,statusCode:i,headers:o,body:h},h)},t=>s(t))}}time(t){let s={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in s)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?s[e]:("00"+s[e]).substr((""+s[e]).length)));return t}msg(s=t,e="",i="",o){const h=t=>!t||!this.isLoon()&&this.isSurge()?t:"string"==typeof t?this.isLoon()?t:this.isQuanX()?{"open-url":t}:void 0:"object"==typeof t&&(t["open-url"]||t["media-url"])?this.isLoon()?t["open-url"]:this.isQuanX()?t:void 0:void 0;this.isSurge()||this.isLoon()?$notification.post(s,e,i,h(o)):this.isQuanX()&&$notify(s,e,i,h(o)),this.logs.push("","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="),this.logs.push(s),e&&this.logs.push(e),i&&this.logs.push(i)}log(...t){t.length>0?this.logs=[...this.logs,...t]:console.log(this.logs.join(this.logSeparator))}logErr(t,s){const e=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();e?$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):$.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(s=>setTimeout(s,t))}done(t={}){const s=(new Date).getTime(),e=(s-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,s)} |