forked from Toulu-debug/enen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jd_jxmc_stock.ts
134 lines (126 loc) · 3.85 KB
/
jd_jxmc_stock.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
* 京喜牧场兑换新品通知
* 推送新上商品
* 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)
})
}