-
-
Notifications
You must be signed in to change notification settings - Fork 168
/
Copy pathsmzdm_task.js
208 lines (161 loc) · 4.31 KB
/
smzdm_task.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
198
199
200
201
202
203
204
205
206
207
208
/*
smzdm 每日任务脚本
项目地址: https://github.com/hex-ci/smzdm_script
cron: 20 14 * * *
*/
const Env = require('./env');
const { requestApi, removeTags, getEnvCookies, wait } = require('./bot');
const notify = require('./sendNotify');
const { SmzdmTaskBot } = require('./library_task');
// ------------------------------------
const $ = new Env('smzdm 每日任务');
class SmzdmNormalTaskBot extends SmzdmTaskBot {
constructor(cookie) {
super(cookie, $);
}
// 主函数
async run() {
$.log('获取任务列表');
const { tasks } = await this.getTaskList();
await wait(5, 10);
let notifyMsg = '';
notifyMsg = await this.doTasks(tasks);
$.log('查询是否有限时累计活动阶段奖励');
await wait(5, 15);
// 领取活动奖励
const { detail } = await this.getTaskList();
if (detail.cell_data && detail.cell_data.activity_reward_status == '1') {
$.log('有奖励,领取奖励');
await wait(5, 15);
const { isSuccess } = await this.receiveActivity(detail.cell_data);
notifyMsg += `${isSuccess ? '🟢' : '❌'}限时累计活动阶段奖励领取${isSuccess ? '成功' : '失败!请查看日志'}\n`;
}
else {
$.log('无奖励');
}
return notifyMsg || '无可执行任务';
}
// 获取任务列表
async getTaskList() {
const { isSuccess, data, response } = await requestApi('https://user-api.smzdm.com/task/list_v2', {
method: 'post',
headers: this.getHeaders()
});
if (isSuccess) {
let tasks = [];
if (data.data.rows[0]) {
data.data.rows[0].cell_data.activity_task.accumulate_list.task_list_v2.forEach(item => {
tasks = tasks.concat(item.task_list);
});
return {
tasks: tasks,
detail: data.data.rows[0]
};
}
else {
$.log(`任务列表获取失败!${response}`);
return {
tasks: [],
detail: {}
};
}
}
else {
$.log(`任务列表获取失败!${response}`);
return {
tasks: [],
detail: {}
};
}
}
// 领取活动奖励
async receiveActivity(activity) {
$.log(`领取奖励: ${activity.activity_name}`);
const { isSuccess, data, response } = await requestApi('https://user-api.smzdm.com/task/activity_receive', {
method: 'post',
headers: this.getHeaders(),
data: {
activity_id: activity.activity_id
}
});
if (isSuccess) {
$.log(removeTags(data.data.reward_msg));
return {
isSuccess
};
}
else {
$.log(`领取奖励失败!${response}`);
return {
isSuccess
};
}
}
// 领取任务奖励
async receiveReward(taskId) {
const robotToken = await this.getRobotToken();
if (robotToken === false) {
return {
isSuccess,
msg: '领取任务奖励失败!'
};
}
const { isSuccess, data, response } = await requestApi('https://user-api.smzdm.com/task/activity_task_receive', {
method: 'post',
headers: this.getHeaders(),
data: {
robot_token: robotToken,
geetest_seccode: '',
geetest_validate: '',
geetest_challenge: '',
captcha: '',
task_id: taskId
}
});
if (isSuccess) {
const msg = removeTags(data.data.reward_msg);
$.log(msg);
return {
isSuccess,
msg
};
}
else {
$.log(`领取任务奖励失败!${response}`);
return {
isSuccess,
msg: '领取任务奖励失败!'
};
}
}
}
!(async () => {
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 SmzdmNormalTaskBot(cookie);
const msg = await bot.run();
notifyContent += `${sep}${msg}\n`;
}
$.log();
await notify.sendNotify($.name, notifyContent);
})().catch((e) => {
$.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '')
}).finally(() => {
$.done();
});