This repository was archived by the owner on Dec 9, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathmiyoubi.py
144 lines (130 loc) · 5.72 KB
/
miyoubi.py
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
import tkinter as tk, tkinter.messagebox, sys, requests, json
def getcookies(): #获取用户登录信息
window.withdraw()
URL1 = 'https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?login_ticket=' + entry.get()
res = requests.get(URL1)
res_text = res.text
json1 = json.loads(res_text)
print(json1)
dataList_in = json1.get('data')
if dataList_in['msg'] == "成功":
print('%s' % dataList_in['cookie_info']['cookie_token'])
URL2 = 'https://api-takumi.mihoyo.com/apihub/api/querySignInStatus?gids=1'
dataList_out = {'cookie_token':0, 'account_id':0}
dataList_out['cookie_token'] = dataList_in['cookie_info']['cookie_token']
dataList_out['account_id'] = str(dataList_in['cookie_info']['account_id'])
print(dataList_out)
res2 = requests.get(URL2, cookies=dataList_out)
print(res2.cookies)
URL3='https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket?login_ticket='+entry.get()+'&token_types=3&uid='+str(dataList_in['cookie_info']['account_id'])
res3 = requests.get(URL3)
res3_text = res3.text
json2 = json.loads(res3_text)
print(json2)
cookies_f = open('cookies.dat', 'w+') #写入数据文件
cookies_f.write('%s\n' % res2.cookies['ltuid'])
cookies_f.write('%s\n' % res2.cookies['ltoken'])
cookies_f.write('%s' % json2['data']['list'][0]['token'])
cookies_f.close()
read_data()
else:
print('%s' % dataList_in['msg'])
tk.messagebox.showinfo("一键完成米游社米游币任务", '登录信息已失效,请重新登录')
input_window()
def send_data(cookies_users): #任务开始
#定义header反爬虫
global header
header={'Referer':'11'}
#获取帖子信息
URL = 'https://api-community.mihoyo.com/community/forum/home/forumPostList?forum_id=1&is_good=false&is_hot=false&page_size=20&sort=create'
res = requests.get(URL, cookies=cookies_users)
res_text = json.loads(res.text)
post_id = res_text['data']['list'][0]['post_id']
print(post_id)
#签到功能
header['Referer']='https://bbs.mihoyo.com/bh3/'
sign_data = {'gids': '1'}
URL_signin = 'https://api-takumi.mihoyo.com/apihub/api/signIn'
res_signin = requests.post(URL_signin, json=sign_data, cookies=cookies_users,headers=header)
print(res_signin.text)
#点赞和阅贴
URL_upvote = 'https://api-takumi.mihoyo.com/apihub/api/upvotePost'
URL_read = 'https://api-takumi.mihoyo.com/post/wapi/getPostFull?gids=1&post_id='
upvote_data = {'gids':'1', 'is_cancel':False, 'post_id':'1'}
count = 5
while count > 0:
upvote_data['post_id'] = post_id
URL_read_id = URL_read + post_id
header['Referer']='https://bbs.mihoyo.com/bh3/article/'+post_id
res_read = requests.get(URL_read_id, cookies=cookies_users,headers=header)
print(res_read.text)
res_vote = requests.post(URL_upvote, json=upvote_data, cookies=cookies_users,headers=header)
print(res_vote.text)
post_id = str(int(post_id) - 1)
count = count - 1
#分享功能
URL_share='https://api-takumi.mihoyo.com/apihub/api/getShareConf?entity_id='+ post_id + '&entity_type=1'
header['Referer']='https://bbs.mihoyo.com/bh3/'
res_share= requests.get(URL_share, cookies=cookies_users,headers=header)
print(res_share.text)
global window
window = tk.Tk()
window.withdraw()
tk.messagebox.showinfo("恭喜", "任务已完成!") #需要无提示版请注释掉这一句
sys.exit()
def cookise_data(cookies_users): #检测用户信息
URL = 'https://api-takumi.mihoyo.com/apihub/api/querySignInStatus?gids=1'
res = requests.get(URL, cookies=cookies_users)
res_text = json.loads(res.text)
print(res_text)
if res_text['message'] == 'OK':
print(res_text['message'])
send_data(cookies_users)
else:
window = tk.Tk()
window.withdraw()
tk.messagebox.showinfo("一键完成米游社米游币任务", '登录信息已失效,请重新登录')
input_window()
def read_data(): #读取用户cookies
try:
cookies_f = open('cookies.dat', 'r')
cookies_users = {'ltuid':'a', 'ltoken':'a', 'stoken':"a" ,'stuid' :'a' }
ltuid = cookies_f.readline()
ltoken = cookies_f.readline()
stoken = cookies_f.readline()
cookies_users['ltuid'] = ltuid.strip()
cookies_users['ltoken'] = ltoken.strip()
cookies_users['stoken'] = stoken.strip()
cookies_users['stuid'] = cookies_users['ltuid']
cookies_f.close
print(cookies_users)
cookise_data(cookies_users)
except IOError:
window = tk.Tk()
window.withdraw()
tk.messagebox.showinfo("一键完成米游社米游币任务", '读取数据文件失败,请重新登录')
input_window()
def input_window(): #输入界面
global window
window = tk.Tk()
global entry
sw = window.winfo_screenwidth()
sh = window.winfo_screenheight()
ww = 300
wh = 200
x = (sw - ww) / 2
y = (sh - wh) / 2
window.geometry('%dx%d+%d+%d' % (ww, wh, x, y))
window.title('一键完成米游社米游币任务')
(tk.Label(window, text='请输入login_ticket', font=('Arial', 12), width=30, height=2)).pack()
entry = tk.Entry(window, show=None, font=('Arial', 14))
entry.pack()
button = tk.Button(window, text='确定', command=getcookies)
button.pack()
window.mainloop()
try:
f = open('cookies.dat', 'r')
f.close()
read_data()
except IOError:
input_window()