-
-
Notifications
You must be signed in to change notification settings - Fork 168
/
Copy pathsmzdm_testing.js
197 lines (149 loc) · 4.21 KB
/
smzdm_testing.js
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/*
smzdm 全民众测能量值任务脚本
项目地址: https://github.com/hex-ci/smzdm_script
cron: 20 15 * * *
*/
const Env = require('./env');
const { requestApi, getEnvCookies, wait } = require('./bot');
const notify = require('./sendNotify');
const { SmzdmTaskBot } = require('./library_task');
// ------------------------------------
const $ = new Env('smzdm 全民众测能量值任务');
class SmzdmTestingTaskBot extends SmzdmTaskBot {
constructor(cookie) {
super(cookie, $);
}
// 主函数
async run() {
const activityId = await this.getTestingActivityId();
if (!activityId) {
return '';
}
await wait(5, 10);
const activityInfo = await this.getTestingActivityInfo(activityId);
if (!activityInfo) {
return '';
}
await wait(5, 10);
let notifyMsg = await this.doTasks(activityInfo.activity_task.default_list);
await wait(3, 5);
// 查询当前拥有的能量数量, 以及过期时间
notifyMsg += await this.getMyTestingInfo();
return notifyMsg || '无可执行任务';
}
// 获取当前能量值任务的活动 ID
async getTestingActivityId() {
$.log('获取活动 ID');
const { isSuccess, data, response } = await requestApi('https://zhiyou.m.smzdm.com/task/task/ajax_get_activity_id', {
method: 'get',
data: {
'from': 'zhongce'
},
headers: {
...this.getHeadersForWeb(),
Origin: 'https://test.m.smzdm.com',
Referer: 'https://test.m.smzdm.com/'
}
});
if (isSuccess) {
return data.data.activity_id;
}
else {
$.log(`获取活动 ID 失败!${response}`);
return false;
}
}
// 获取活动下的所有任务
async getTestingActivityInfo(id) {
$.log('获取活动信息');
const { isSuccess, data, response } = await requestApi('https://zhiyou.m.smzdm.com/task/task/ajax_get_activity_info', {
method: 'get',
data: {
'activity_id': id
},
headers: this.getHeadersForWeb()
});
if (isSuccess) {
return data.data;
}
else {
$.log(`获取活动信息失败!${response}`);
return false;
}
}
// 众测中心-必中券信息查询
async getMyTestingInfo() {
$.log('获取必中券信息');
const { isSuccess, data, response } = await requestApi('https://test.m.smzdm.com/win_coupon/user_data', {
method: 'get',
headers: this.getHeadersForWeb()
});
if (isSuccess) {
const msg = `当前拥有必中券: ${data.data.my_energy.my_energy_total}\n必中券过期时间: ${data.data.my_energy.energy_expired_time}`;
$.log(msg);
return `\n${msg}\n`;
}
else {
$.log(`获取个人必中券信息失败!${response}`);
return '';
}
}
// 领取奖励
async receiveReward(taskId) {
const { isSuccess, response } = await requestApi('https://zhiyou.m.smzdm.com/task/task/ajax_activity_task_receive', {
method: 'post',
data: {
'task_id': taskId
},
headers: this.getHeadersForWeb()
});
if (isSuccess) {
$.log('领取成功!');
return {
isSuccess,
msg: ''
};
}
else {
$.log(`领取任务奖励失败!${response}`);
return {
isSuccess,
msg: '领取任务奖励失败!'
};
}
}
}
!(async () => {
if (process.env.SMZDM_TASK_TESTING != 'yes') {
$.log('\n🟡请设置 SMZDM_TASK_TESTING 环境变量值为 yes 后才能运行全民众测能量值任务!');
return;
}
const cookies = getEnvCookies();
if (cookies === false) {
$.log('\n请先设置 SMZDM_COOKIE 环境变量');
return;
}
let notifyContent = '';
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i];
if (!cookie) {
continue;
}
if (i > 0) {
$.log();
await wait(10, 30);
$.log();
}
const sep = `\n****** 账号${i + 1} ******\n`;
$.log(sep);
const bot = new SmzdmTestingTaskBot(cookie);
const msg = await bot.run();
notifyContent += `${sep}${msg}\n`;
}
$.log();
await notify.sendNotify($.name, notifyContent);
})().catch((e) => {
$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')
}).finally(() => {
$.done();
});