前言

优化了重构原先的代码,修复了一下bug。
废话不多说上代码。😏😏

🍏签到代码

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
import requests
import configparser
import time
import hashlib
import string
import random
import datetime

#md5加密函数
def md5(text):
md5 = hashlib.md5()
md5.update(text.encode())
return md5.hexdigest()

#ds算法函数
def getDS():
n = 'cx2y9z9a29tfqvr1qsq6c7yz99b5jsqt'
i = str(int(time.time()))
r = ''.join(random.sample(string.ascii_lowercase + string.digits, 6))
c = md5("salt=" + n + "&t=" + i + "&r=" + r)
return "{},{},{}".format(i, r, c)

#获取配置文件数据函数
def getsz(key,vale):
con = configparser.ConfigParser()
con.read('config.ini')
return con.get(key,vale)

#论坛签到函数
def ltqd():
cookie = getsz('user','ltcookie')
if cookie == "":
print('没有论坛cookie,跳过执行。')
return '论坛签到结果: 没有配置论坛cookie'
else:
sl = 1
while sl <= 10:
url = 'https://api-takumi.mihoyo.com/apihub/sapi/signIn'
data = '{"gids":"'+ str(sl) +'"}'
zz = requests.post(url=url,data=data,headers=head('user','ltcookie','app_bb')).json()
if zz['message'] == 'OK':
print('签到结果:{}签到成功'.format(sl))
else:
print('签到结果:'+ str(sl) + str(zz['message']))
sl = sl+1
return '论坛签到结果:' + zz['message']

#米游社帖子点赞
def mysdz():
cookie = getsz('user','ltcookie')
if cookie == "":
print('没有论坛cookie,跳过执行。')
return '论坛签到结果: 没有配置论坛cookie'
else:
sl = 0
daurl = "https://api-takumi.mihoyo.com/apihub/sapi/upvotePost"
url = "https://api-takumi.mihoyo.com/post/api/getForumPostList?forum_id=26&is_good=false&is_hot=false&last_id=&page_size=20&sort_type=1"
dzysj = requests.get(url=url).json()
while sl < 5:
post_id = dzysj['data']['list'][sl]['post']['post_id']
data = '{"is_cancel":false,"post_id":"'+ post_id +'"}'
dafh = requests.post(url=daurl,data=data,headers=head('user','ltcookie','app_bb')).json()
sl = sl + 1
print(dafh['message'])
return dafh['message']

#head头函数
def head(key,vale,app_version):
head = {
'User-Agent':'Mozilla/5.0 (Linux; Android 7.0; Meizu S6 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/65.0.3325.110 Mobile Safari/537.36 miHoYoBBS/2.2.0',
'x-rpc-device_id':'2eee2fdb-0cc1-3f25-8e5c-0e2b06439cbd',
'referer':'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon',
'x-rpc-app_version':getsz(key,app_version),
'Host':'api-takumi.mihoyo.com',
'x-rpc-client_type':'5',
'Content-Type':'application/json;charset=UTF-8',
'Accept':'application/json, text/plain, */*',
'cookie':getsz(key,vale),
'X-Requested-With':'com.mihoyo.hyperion',
'ds':getDS()
}
return head

#获取今日奖励信息函数
def getjlxx(sj):
url = 'https://api-takumi.mihoyo.com/event/bbs_sign_reward/home?act_id=e202009291139501'
zz = requests.get(url=url,headers=head('user','llqcookie','app_bb')).json()
sy = int(sj)
return '今日奖励: ' + zz["data"]['awards'][sy]['name'] + ' x ' + str(zz["data"]['awards'][sy]['cnt'])

#获取游戏uid函数
def qsj():
url = 'https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie?game_biz=hk4e_cn'
zz = requests.get(url=url,headers=head('user','llqcookie','app_bb')).json()
return zz['data']['list'][0]

#获取累计签到函数
def zsj(qsj):
url = 'https://api-takumi.mihoyo.com/event/bbs_sign_reward/info?region={}&act_id={}&uid={}'.format(qsj['region'],'e202009291139501',qsj['game_uid'])
zz = requests.get(url=url,headers=head('user','llqcookie','app_bb')).json()
return zz['data']['total_sign_day']

#游戏每日签到函数
def yxqd(qsj):
url = 'https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign'
data = '{"act_id":"e202009291139501","region":"'+ qsj['region'] +'","uid":"'+ qsj['game_uid'] +'"}'
zz = requests.post(url=url,data=data,headers=head('user','llqcookie','app_bb')).json()
if zz['message'] == 'OK':
return '签到结果: 签到完成'
else:
return '签到结果: ' + zz['message']

#推送通知函数
def qqts(event,context):
ztsj = random.randint(0,300)
print('暂停{}秒继续执行'.format(ztsj))
time.sleep(ztsj)
yxsj = qsj()
ljqdts = zsj(yxsj)
data = {'msg':'旅行者: ' + yxsj['nickname'] + '\n' + '服务器: ' + yxsj['region_name']+'\n'+'uid:'+yxsj['game_uid'] +'\n' + getjlxx(ljqdts) +'\n'+'本月签到: ' +str(ljqdts)+'次'+'\n'+ yxqd(yxsj) +'\n'+ ltqd() +'\n' +"米游社帖子点赞: " + mysdz()}
if getsz('user','skey') == '':
print('没有配置qq推送key')
return data
else:
url = 'https://qmsg.zendee.cn/send/{}'.format(getsz('user','skey'))
zz = requests.post(url=url,data=data).json()
if zz['code'] == 0:
print(zz['reason'])
return zz
else:
print(zz['reason'])
return zz

配置文件

1
2
3
4
5
6
[user]
app_bb = 2.2.1
ltcookie = ;米游社论坛签到cookie,不论坛签到就删除留空
llqcookie = ;原神每日奖励签到cookie,必须要
skey = ;qq推送key,必须要

获取cookie

点击查看获取cookie教程

代码打包下载

点击下载