forked from Toulu-debug/enen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jd_jxmc_stock.ts
130 lines (124 loc) · 4.32 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
/**
* 京喜牧场兑换新品通知
* 推送新上商品
* cron: 0 * * * *
*/
import axios from 'axios';
import {readFileSync, writeFileSync, existsSync} from "fs";
import {requireConfig, wait, getRandomNumberByRange, randomWord, randomString} from './TS_USER_AGENTS';
import {requestAlgo, geth5st} from "./utils/V3";
import {token} from './utils/jd_jxmc.js'
import {sendNotify} from './sendNotify'
let cookie: string = '', res: any = '', UserName: string, jxToken: { farm_jstoken: string, timestamp: string, phoneid: string };
!(async () => {
await requestAlgo('00df8');
let cookiesArr: string[] = await requireConfig();
cookie = cookiesArr[getRandomNumberByRange(0, cookiesArr.length)];
UserName = decodeURIComponent(cookie.match(/pt_pin=([^;]*)/)![1])
if (!existsSync('./json/jxmc_stock.json')) {
writeFileSync('./json/jxmc_stock.json', '{}', 'utf-8')
}
let exist: object
try {
exist = JSON.parse(readFileSync('./json/jxmc_stock.json', 'utf-8'))
} catch (e) {
exist = {}
}
let items: string = '', message: string = ''
res = await api('queryservice/GetGoodsListV2', 'activeid,activekey,channel,jxmc_jstoken,phoneid,sceneid,timestamp', {})
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 = ''
}
}
console.log(exist)
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 sendNotify('京喜牧场兑换', message)
}
})()
interface Params {
isgift?: number,
activeid?: string,
activekey?: string,
jxmc_jstoken?: string,
timestamp?: string,
phoneid?: string
}
async function api(fn: string, stk: string, params: Params = {}) {
jxToken = await token(cookie)
let url: string, t: { key: string, value: string } [] = [
{key: 'activeid', value: 'jxmc_active_0001'},
{key: 'activekey', value: 'null'},
{key: 'channel', value: '7'},
{key: 'sceneid', value: '1001'},
{key: 'jxmc_jstoken', value: jxToken.farm_jstoken},
{key: 'timestamp', value: jxToken.timestamp},
{key: 'phoneid', value: jxToken.phoneid},
]
url = `https://m.jingxi.com/jxmc/${fn}?channel=7&sceneid=1001&_stk=${encodeURIComponent(stk)}&_ste=1&sceneval=2&g_login_type=1&callback=jsonpCBK${randomWord()}&g_ty=ls`
for (let [key, value] of Object.entries(params)) {
t.push({key, value})
url += `&${key}=${value}`
}
let h5st = geth5st(t, '00df8')
url += `&h5st=${encodeURIComponent(h5st)}`
let {data}: any = await axios.get(url, {
headers: {
'Host': 'm.jingxi.com',
'Accept': '*/*',
'Connection': 'keep-alive',
'User-Agent': `jdpingou;iPhone;5.14.2;${getRandomNumberByRange(12, 16)}.${getRandomNumberByRange(0, 3)};${randomString(40)};`,
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
'Referer': 'https://st.jingxi.com/',
'Cookie': cookie
}
})
return JSON.parse(data.match(/jsonpCBK.?\((.*)/)[1])
}
async function getEgg(items: string) {
items = items.substring(0, items.length - 1)
let {data} = await axios.get(`https://m.jingxi.com/active/queryprizedetails?actives=${items}&_=${Date.now()}&sceneval=2&g_login_type=1&callback=jsonpCBK${randomWord()}&g_ty=ls`, {
headers: {
'Host': 'm.jingxi.com',
'Accept': '*/*',
'Connection': 'keep-alive',
'User-Agent': `jdpingou;iPhone;5.14.2;${getRandomNumberByRange(12, 16)}.${getRandomNumberByRange(0, 3)};${randomString(40)};`,
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
'Referer': 'https://st.jingxi.com/',
'Cookie': cookie
}
})
return JSON.parse(data.match(/jsonpCBK.?\(([\s\S]*)\);/)[1])
}