代码拉取完成,页面将自动刷新
同步操作将从 XanderYe/jd_scripts 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/**
* 京喜牧场兑换新品通知
* 推送新上商品
* cron: 0 * * * *
*/
import axios from 'axios';
import {requireConfig, requestAlgo, wait, getRandomNumberByRange, h5st} from './TS_USER_AGENTS';
import {readFileSync, writeFileSync, accessSync} from "fs";
const notify = require('./sendNotify'), jxmcToken = require('./utils/jd_jxmc.js').token;
let cookie: string = '', res: any = '', UserName: string;
!(async () => {
await requestAlgo();
let cookiesArr: any = await requireConfig();
cookie = cookiesArr[getRandomNumberByRange(0, cookiesArr.length)];
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
try {
accessSync('./json/jxmc_stock.json')
} catch (e) {
writeFileSync('./json/jxmc_stock.json', '{}', 'utf-8')
}
let exist: any = readFileSync('./json/jxmc_stock.json', 'utf-8')
try {
exist = JSON.parse(exist)
} catch (e) {
exist = {}
}
let items: string = '', message: string = '', token = await jxmcToken(cookie);
while (1) {
if (new Date().getSeconds() === 0)
break
await wait(100)
}
res = await api('queryservice/GetGoodsListV2',
'activeid,activekey,channel,jxmc_jstoken,phoneid,sceneid,timestamp', {
activeid: 'jxmc_active_0001',
activekey: 'null',
jxmc_jstoken: token.farm_jstoken,
timestamp: token.timestamp,
phoneid: token.phoneid
})
console.log(JSON.stringify(res))
await wait(2000);
for (let good of res.data.goodslist) {
if (!Object.keys(exist).includes(good.prizepool)) {
items += good.prizepool + ','
exist[good.prizepool] = {
id: good.prizepool,
egg: good.neednum
}
}
}
let allItems: string = items;
if (items) {
let arr: string[] = items.split(',');
arr.pop();
items = '';
let result = [];
for (let i = 0, len = arr.length; i < len; i += 30) {
result.push(arr.slice(i, i + 30))
}
for (let group of result) {
for (let id of group) {
items += id + ','
}
res = await getEgg(items)
await wait(1000)
for (let t of res.result) {
exist[t.active].name = t.prizes[0].Name
}
items = ''
}
}
writeFileSync('./json/jxmc_stock.json', JSON.stringify(exist, null, 2), 'utf-8')
for (let j of Object.keys(exist)) {
if (allItems.indexOf(j) > -1) {
message += exist[j].name + '\t' + exist[j].egg + '\n'
}
}
console.log(message)
if (message) {
await notify.sendNotify('京喜牧场兑换', message)
}
})()
interface Params {
isgift?: number,
activeid?: string,
activekey?: string,
jxmc_jstoken?: string,
timestamp?: string,
phoneid?: string
}
function api(fn: string, stk: string, params: Params = {}) {
return new Promise(async (resolve, reject) => {
let url = `https://m.jingxi.com/jxmc/${fn}?channel=7&sceneid=1001&_stk=${encodeURIComponent(stk)}&_ste=1&sceneval=2`
url = h5st(url, stk, params, 10028)
try {
let {data}: any = await axios.get(url, {
headers: {
'Cookie': cookie,
'Host': 'm.jingxi.com',
'User-Agent': 'jdpingou;',
'Referer': 'https://st.jingxi.com/',
}
})
resolve(data)
} catch (e) {
reject(401)
}
})
}
function getEgg(items: string) {
items = items.substr(0, items.length - 1)
let rnd = "abcdefhijkmnprstwxyz".charAt(Math.floor(Math.random() * 4)).toUpperCase();
return new Promise(async resolve => {
let {data}: any = await axios.get(`https://m.jingxi.com/active/queryprizedetails?actives=${items}&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBK${rnd}&g_ty=ls`, {
headers: {
'Cookie': cookie,
'Host': 'm.jingxi.com',
'User-Agent': 'jdpingou;',
'Referer': 'https://st.jingxi.com/pingou/jxmc/index.html',
}
})
data = JSON.parse(data.replace(`try{ jsonpCBK${rnd}(`, '').replace(');}catch(e){}', ''))
resolve(data)
})
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。