-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdxx.py
More file actions
300 lines (275 loc) · 10.2 KB
/
dxx.py
File metadata and controls
300 lines (275 loc) · 10.2 KB
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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
# -*- coding: utf-8 -*-
"""
//支持青龙和actions定时执行
//使用方法:创建变量 名字:dxx 内容的写法:
//openid(抓包获得), 名字(cardNo) ,区域(nid)
//每个账号用回车键隔开
//例如:
o****1, 123 ,1684
o****2, 66 ,1546
//更新内容:打卡任务每周执行一次
//如需推送将需要的推送写入变量dxx_fs即可多个用&隔开
如:变量内输入push需再添加dxx_push变量 内容是push的token即可
"""
import requests
import os
import time
import re
import json
requests.urllib3.disable_warnings()
#初始化环境变量开头
ZData = "5"
ttoken = ""
tuserid = ""
push_token = ""
SKey = ""
QKey = ""
ktkey = ""
msgs = ""
datas = ""
msg = ""
#检测推送
if "dxx_fs" in os.environ:
fs = os.environ.get('dxx_fs')
fss = fs.split("&")
if("tel" in fss):
if "dxx_telkey" in os.environ:
telekey = os.environ.get("dxx_telkey")
telekeys = telekey.split('\n')
ttoken = telekeys[0]
tuserid = telekeys[1]
if("qm" in fss):
if "dxx_qkey" in os.environ:
QKey = os.environ.get("dxx_qkey")
if("stb" in fss):
if "dxx_skey" in os.environ:
SKey = os.environ.get("dxx_skey")
if("push" in fss):
if "dxx_push" in os.environ:
push_token = os.environ.get("dxx_push")
if("kt" in fss):
if "dxx_ktkey" in os.environ:
ktkey = os.environ.get("dxx_ktkey")
if "dxx" in os.environ:
datas = os.environ.get("dxx")
else:
print('您没有输入任何信息')
exit
groups = datas.split('\n')
#初始化环境变量结尾
class dxxanelQd(object):
def __init__(self,openid,cardNo,nid):
#地区
self.nid = nid
#名字
self.cardNo = cardNo
# openid
self.openid = openid
##############推送渠道配置区###############
# 酷推qq推送
#self.ktkey = ktkey
# Pushplus私聊推送(废弃,顶上定义变量即可)
#self.push_token = push_token
# ServerTurbo推送(废弃,顶上定义变量即可)
#self.SendKey = SKey
# Qmsg私聊推送(废弃,顶上定义变量即可)
#self.QmsgKey = QKey
# Telegram私聊推送
self.tele_api_url = 'https://api.telegram.org'
self.tele_bot_token = ttoken
self.tele_user_id = tuserid
##########################################
def getAccessToken(self,openid):
time_stamp = str(int(time.time())) #获取时间戳
url = "https://qczj.h5yunban.com/qczj-youth-learning/cgi-bin/login/we-chat/callback?callback=https%3A%2F%2Fqczj.h5yunban.com%2Fqczj-youth-learning%2Findex.php&scope=snsapi_userinfo&appid=wx56b888a1409a2920&openid=" + openid + "&nickname=空城&headimg=&time=" + time_stamp + "&source=common&sign=&t=" + time_stamp
res = session.get(url)
access_token = res.text[45:81]
print("获取到AccessToken:", access_token)
return access_token
def getCurrentCourse(self,access_token,msg):
url = "https://qczj.h5yunban.com/qczj-youth-learning/cgi-bin/common-api/course/current?accessToken=" + access_token
res = session.get(url)
res_json = json.loads(res.text)
if (res_json["status"] == 200):
msg = msg + "获取到最新课程代号:" + res_json["result"]["id"]
print("获取到最新课程代号:", res_json["result"]["id"])
return res_json["result"]["id"]
else:
msg = msg + "获取最新课程失败!"
print("获取最新课程失败!")
return msg
def getJoin(self,access_token, current_course, nid, cardNo,msg):
data = {
"course": current_course, # 大学习期次的代码,如C0046,本脚本已经帮你获取啦
"subOrg": None,
"nid": nid, # 团组织编号,形如N003************
"cardNo": cardNo # 打卡昵称
}
url = "https://qczj.h5yunban.com/qczj-youth-learning/cgi-bin/user-api/course/join?accessToken=" + access_token
res = session.post(url, json=data)
print("打卡结果:", res.text)
res_json = json.loads(res.text)
if (res_json["status"] == 200):
msg = msg + "打卡成功"
print("打卡成功")
return msg , res.text
else:
msg = msg + "打卡失败!"
print("打卡失败!")
return msg
def getsign(self,access_token,msg):
data = {}
url = "https://qczj.h5yunban.com/qczj-youth-learning/cgi-bin/user-api/sign-in?accessToken=" + access_token
res = session.post(url, json=data)
print("签到结果:", res.text)
res_json = json.loads(res.text)
if (res_json["status"] == 200):
msg = msg + "签到成功"
print("签到成功")
return msg
else:
msg = msg + "签到失败!"
print("签到失败!")
return msg
def getTasks(self,access_token,msg):
a = 0
b = 0
c = 0
while a < 4 :
data = {}
url = "https://qczj.h5yunban.com/qczj-youth-learning/cgi-bin/user-api/course/study?accessToken=" + access_token + "&id=C00470021 "
res = session.post(url, json=data)
#print("任务结果:", res.text)
res_json = json.loads(res.text)
if (res_json["status"] == 200):
a += 1
b += 1
print("任务第"+ str(a) +"次成功")
else:
a += 1
c += 1
print("任务第"+ str(a) +"次失败")
msg = msg + "签到" + str(b) + "次成功," + str(c) + "次失败"
print("签到" + str(b) + "次成功," + str(c) + "次失败")
return msg
def getinfo(self,access_token,msg):
url = "https://qczj.h5yunban.com/qczj-youth-learning/cgi-bin/user-api/info?accessToken=" + access_token
res = session.get(url)
res_json = json.loads(res.text)
if (res_json["status"] == 200):
msg = msg + "获取到积分数:" + str(res_json["result"]["score"])
print("获取到积分数:", str(res_json["result"]["score"]))
return msg
else:
msg = msg + "获取积分数失败!"
print("获取积分数失败!")
return msg
# Qmsg私聊推送
def Qmsg_send(msg):
if QKey == '':
return
qmsg_url = 'https://qmsg.zendee.cn/send/' + str(QKey)
data = {
'msg': msg,
}
requests.post(qmsg_url, data=data)
# Server酱推送
def server_send(self, msg):
if SKey == '':
return
server_url = "https://sctapi.ftqq.com/" + str(SKey) + ".send"
data = {
'text': self.name + "大学习通知",
'desp': msg
}
requests.post(server_url, data=data)
# 酷推QQ推送
def kt_send(msg):
if ktkey == '':
return
kt_url = 'https://push.xuthus.cc/send/' + str(ktkey)
data = ('大学习完成,点击查看详细信息~\n' + str(msg)).encode("utf-8")
requests.post(kt_url, data=data)
#Telegram私聊推送
def tele_send(self, msg: str):
if self.tele_bot_token == '':
return
tele_url = f"{self.tele_api_url}/bot{self.tele_bot_token}/sendMessage"
data = {
'chat_id': self.tele_user_id,
'parse_mode': "Markdown",
'text': msg
}
requests.post(tele_url, data=data)
# Pushplus推送
def pushplus_send(msg):
if push_token == '':
return
token = push_token
title= '大学习通知'
content = msg
url = 'http://www.pushplus.plus/send'
data = {
"token":token,
"title":title,
"content":content
}
body=json.dumps(data).encode(encoding='utf-8')
headers = {'Content-Type':'application/json'}
re = requests.post(url,data=body,headers=headers)
print(re.status_code)
def main(self):
global msgs
#检测星期几
a=time.localtime()
a = time.strftime("%w",a)
# 获取token
access_token = self.getAccessToken(openid)
#每日签到
self.sign = self.getsign(access_token,msg)
#每日任务
self.Tasks = self.getTasks(access_token,msg)
# 打卡任务(默认每周五执行)
if a == ZData:
# 获取最新的打卡章节
print("今日为星期" + ZData + ",开始打卡")
current_course = self.getCurrentCourse(access_token,msg)
res = self.getJoin(access_token, current_course, nid,cardNo,msg)
else:
msgs = msgs + '\n' + "今日未星期" + str(a) + "未到达设定星期" + str(ZData) + ",跳过打卡"
print("今日未星期" + str(a) + "未到达设定的星期" + str(ZData) + ",跳过打卡")
#积分查询
self.info = self.getinfo(access_token,msg)
#"大学习签到结果",
#"大学习签到成功:\n" + "状态码:" + str(res["status"]) + "\n课程ID: " +
#current_course + "\n签到学号: " + res["result"]["cardNo"] +
#"\n签到时间: " + res["result"]["lastUpdTime"], "", DD_BOT_TOKEN,
#DD_BOT_SECRET)
msgs = msgs + '\n' + msg
i = 0
n = 0
print("已设置不显示账号密码等信息")
while i < len(groups):
n = n + 1
group = groups[i]
profile = group.split(',')
openid = profile[0]
cardNo = profile[1]
nid = profile[2]
msgs = msgs + '\n' + "用户 " + cardNo + " 的签到结果"
print("第" + str(n) + "个用户 " + cardNo + " 开始签到")
session = requests.session()
session.headers = {
'User-Agent':
'Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4'
}
run = dxxanelQd(openid, cardNo ,nid)
run.main()
time.sleep(5)
i += 1
else:
#dxxanelQd.server_send( msgs )
dxxanelQd.kt_send( msgs )
#dxxanelQd.Qmsg_send(dxxanelQd.name+"\n"+dxxanelQd.email+"\n"+ msgs)
#dxxanelQd.tele_send(dxxanelQd.name+"\n"+dxxanelQd.email+"\n"+ msgs)
dxxanelQd.pushplus_send( msgs )