/* 京东京喜工厂 未完,待续 */ const $hammer = (() => { const isRequest = "undefined" != typeof $request, isSurge = "undefined" != typeof $httpClient, isQuanX = "undefined" != typeof $task; const log = (...n) => { for (let i in n) console.log(n[i]) }; const alert = (title, body = "", subtitle = "", link = "", option) => { if (isSurge) return $notification.post(title, subtitle, body, link); if (isQuanX) return $notify(title, subtitle, (link && !body ? link : body), option); log("==============📣系统通知📣=============="); log("title:", title, "subtitle:", subtitle, "body:", body, "link:", link); }; const read = key => { if (isSurge) return $persistentStore.read(key); if (isQuanX) return $prefs.valueForKey(key); }, write = (key, val) => { if (isSurge) return $persistentStore.write(key, val); if (isQuanX) return $prefs.setValueForKey(key, val); }; const request = (method, params, callback) => { /** * * params(): {url: , headers: , body: } | * * callback( * error, * {status: , headers: , body: } | "" * ) * */ let options = {}; if (typeof params == "string") { options.url = params; } else { options.url = params.url; if (typeof params == "object") { params.headers && (options.headers = params.headers); params.body && (options.body = params.body); } } method = method.toUpperCase(); const writeRequestErrorLog = function (m, u) { return err => { log("=== request error -s--"); log(`${m} ${u}`, err); log("=== request error -e--"); }; }(method, options.url); if (isSurge) { const _runner = method == "GET" ? $httpClient.get : $httpClient.post; return _runner(options, (error, response, body) => { if (error == null || error == "") { response.body = body; callback("", response); } else { writeRequestErrorLog(error); callback(error, ""); } }); } if (isQuanX) { options.method = method; $task.fetch(options).then( response => { response.status = response.statusCode; delete response.statusCode; callback("", response); }, reason => { writeRequestErrorLog(reason.error); callback(reason.error, ""); } ); } }; const done = (value = {}) => { if (isQuanX) return isRequest ? $done(value) : null; if (isSurge) return isRequest ? $done(value) : $done(); }; return { isRequest, isSurge, isQuanX, log, alert, read, write, request, done }; })(); //京东接口地址 const JD_API_HOST = 'https://wq.jd.com'; //直接用NobyDa的jd cookie // const cookie = $hammer.read('CookieJD'); const cookie = 'unpl=V2_ZzNtbUAHRRx0DxZVch9aBWIBRllLAhMSfQtDUnxLWVdnBhpcclRCFnQUR1JnGFUUZAMZXURcQhJFOEZVehhdDWMEGllyZ0sdGwgLVBUaMgUqTl9tQVdzFEUIQlx%252bGlwAZAAXW0tRRhZ9DU5TfRpsNWcFIl1DVkIUcgBBVnkaVDU8VnxbEgJDESFYRFNyHllQVwIiXHJWc0MbCEdVehteBmYAEhBCU0sQdghDV3gcWgxhBhFVR19EE3Y4R2R4; PPRD_P=CT.138912.3.26-UUID.1594174344038855825195; __jda=122270672.1594174344038855825195.1594174344.1594619829.1594628524.29; __jdb=122270672.4.1594174344038855825195|29.1594628524; __jdc=122270672; __jdv=122270672%7Ckong%7Ct_1000170136%7Ctuiguang%7Cnotset%7C1594569450665; __wga=1594631325352.1594630264664.1594619828892.1594619828892.3.2; _tj_rvurl=https%3A//wq.jd.com/cube/front/activePublish/dream_factory_report/380556.html%3Fptag%3D138912.3.26%26lng%3D113.321134%26lat%3D23.139617%26sid%3D6c732f3e20be25526c2e67df89e488dw%26un_area%3D19_1601_50258_51885; cid=8; mba_muid=1594174344038855825195.33.1594631325409; mba_sid=33.18; retina=1; shshshfp=3f7499d014a4f06d56edfb5378a934ee; shshshfpb=w5O9mqDoHWvVwOS9jAYB%20zg%3D%3D; shshshsID=ed6e17a13e5b4921d09de669e2b06c89_3_1594631325584; wqmnx1=MDEyNjM1M3B3am1ncmZyZHR0My4mMTImMjlzYzNlNjdld2ExMDIxNjg1NnBoOTsuNWE0ZWVjYmRla2lEQS0tLS1ENXV0ZTNVL3NpTzFlaDFkczAzaFA7dTEzcGV5ZG9yZXYxcE1HYWVKZXJDbzs0Ly9hOTBjZmEyMTswZzAwdGFvfDUwMTY7O2RlO0o1Mi5JMztsLlA7IG4gX2tjWHBiNi5LLGVrby80cEpLMWY3bjI0MllPT1UhSCU%3D; wxa_level=1; pt_key=app_openAAJfBSQbAEBjl86WMnH-4g3Is6PISRQsx5CU-pQolK0klfaTVHmW5nfZL7DkOGhtRWp6ttQKfdDSiHZ1el6DX2SEjWkotlT2; pt_pin=%E8%A2%AB%E6%8A%98%E5%8F%A0%E7%9A%84%E8%AE%B0%E5%BF%8633; pwdt_id=%E8%A2%AB%E6%8A%98%E5%8F%A0%E7%9A%84%E8%AE%B0%E5%BF%8633; sid=6c732f3e20be25526c2e67df89e488dw; wq_area=19_1601_3633%7C3; visitkey=270851475495567; jxsid=15946198288819114076; sc_width=414; webp=0; shshshfpa=b134218e-f14e-6005-fa8e-52d2bc02126f-1594364440'; let shareCodes = [ 'V5LkjP4WRyjeCKR9VRwcRX0bBuTz7MEK0-E99EJ7u0k=', ]; let factoryId, productionId, userTaskStatusList, dailyTask = [], produceTask = []; const name = '京喜工厂'; let message = ''; let subTitle = ''; const Task = step() Task.next(); function* step() { const startTime = Date.now(); yield userInfo(); yield collectElectricity(); yield investElectric(); yield taskList(); //yield produceTaskFun();//生产任务 const end = ((Date.now() - startTime) / 1000).toFixed(2); console.log(`\n完成${name}脚本耗时: ${end} 秒\n`); $hammer.alert(name, message, subTitle); } function produceTaskFun() { for (let item of produceTask) { if (item.awardStatus !== 1) { if (item.completedTimes >= item.targetTimes) { const url = `/newtasksys/newtasksys_front/Award?source=dreamfactory&bizCode=dream_factory&taskId=${item.taskId}&sceneval=2&g_login_type=1`; request(url).then((res) => { console.log(`每日任务完成结果${JSON.stringify(res)}}`); try { if (res.ret === 0) { console.log(`${item.taskName}任务完成`) } } catch (e) { console.log(`${item.taskName}任务异常`) } }) } } } Task.next(); } // 收取发电机的电力 function collectElectricity() { const url = `/dreamfactory/generator/CollectCurrentElectricity?zone=dream_factory&apptoken=&pgtimestamp=&phoneID=&factoryid=${factoryId}&doubleflag=1&sceneval=2`; request(url).then((res) => { try { if (res.ret === 0) { console.log(`成功从发电机收取${res.data.CollectElectricity}电力`); } Task.next(); } catch (e) { console.log('收集电力异常') } }) } // 投入电力 function investElectric() { const url = `/dreamfactory/userinfo/InvestElectric?zone=dream_factory&productionId=${productionId}&sceneval=2&g_login_type=1`; request(url).then((res) => { try { if (res.ret === 0) { console.log(`成功投入电力${res.data.investElectric}电力`); message += `【投入电力】${res.data.investElectric}`; } else { console.log(`投入失败,${res.message}`); } Task.next(); } catch (e) { console.log('收集电力异常') } }) } // 初始化任务 function taskList() { const url = `/newtasksys/newtasksys_front/GetUserTaskStatusList?source=dreamfactory&bizCode=dream_factory&sceneval=2&g_login_type=1`; request(url).then((res) => { try { //console.log(`${JSON.stringify(res)}`) //console.log(res) if (res.ret === 0) { userTaskStatusList = res.data.userTaskStatusList; for (let item of res.data.userTaskStatusList) { if (item.dateType === 2) { dailyTask.push(item); } if (item.dateType === 1) { produceTask.push(item); } } Task.next(); } } catch (e) { console.log('初始化任务异常') } }).catch((error) => { console.log(error) }) } //初始化个人信息 function userInfo() { const url = `/dreamfactory/userinfo/GetUserInfo?zone=dream_factory&pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&sceneval=2`; request(url).then((response) => { try { // taskInfo = res.data.result.taskInfos; if (response.ret === 0) { const { data } = response; // !data.productionList && !data.factoryList if (data.factoryList && data.productionList) { const production = data.productionList[0]; const factory = data.factoryList[0]; factoryId = factory.factoryId;//工厂ID productionId = production.productionId;//商品ID subTitle = data.user.pin; console.log(`\n我的分享码\n${data.user.encryptPin}\n`); // console.log(`进度:${(production.investedElectric/production.needElectric).toFixed(2) * 100}%\n`); message += `【生产进度】${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%\n`; Task.next(); } else { return $hammer.alert(name, '\n【提示】此账号京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动\n'); } } else { Task.return(); } } catch (e) { console.log(e); console.log('初始化任务异常'); } }) } //等待一下 function sleep(s) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(); }, s * 1000); }) } async function request(url, body = {}) { await sleep(2); //歇口气儿, 不然会报操作频繁 return new Promise((resolve, reject) => { $hammer.request('GET', taskurl(url, body), (error, response) => { if(error){ $hammer.log("Error:", error); }else{ //console.log(response.body) resolve(JSON.parse(response.body)); } }) }) } function taskurl(url, body) { return { url: `${JD_API_HOST}${url}`, headers: { 'Cookie' : cookie, 'Host': 'wq.jd.com', 'Accept': '*/*', 'Connection': 'keep-alive', 'User-Agent': 'jdapp;iPhone;9.0.4;13.5.1;;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', 'Accept-Language': 'zh-cn', 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', 'Accept-Encoding': 'gzip, deflate, br', } } }