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
|
import time
import json
import random
import string
import hashlib
import requests
from typing import Optional
from ATRI.request import Request
from ATRI.config import GENSHIN_CONFIG
from ATRI.exceptions import InvalidRequestError
mhyVersion = GENSHIN_CONFIG['genshin']['mhyVersion']
class Genshin:
def md5(self, text: str) -> str:
md5 = hashlib.md5()
md5.update(text.encode())
return md5.hexdigest()
def getDS(self):
global mhyVersion
if mhyVersion == '2.1.0':
n = self.md5(mhyVersion)
elif mhyVersion == '2.2.1':
n = "cx2y9z9a29tfqvr1qsq6c7yz99b5jsqt"
else:
mhyVersion = "2.2.1"
n = "cx2y9z9a29tfqvr1qsq6c7yz99b5jsqt"
i = str(int(time.time()))
r = ''.join(random.sample(string.ascii_lowercase + string.digits, 6))
c = self.md5("salt=" + n + "&t="+ i + "&r=" + r)
return (i + "," + r + "," + c)
def getInfo(self, server_id: str, uid: str) -> str:
try:
url = GENSHIN_CONFIG['genshin']['url'] + server_id + "&role_id=" + uid
print(url)
headers: dict = {
'Accept': 'application/json, text/plain, */*',
'DS': self.getDS(),
'Origin': 'https://webstatic.mihoyo.com',
'x-rpc-app_version': mhyVersion,
'User-Agent': 'Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 miHoYoBBS/2.2.0',
'x-rpc-client_type': '4',
'Referer': 'https://webstatic.mihoyo.com/app/community-game-records/index.html?v=6',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,en-US;q=0.8',
'X-Requested-With': 'com.mihoyo.hyperion'
}
result = requests.get(url=url,headers=headers, timeout=10)
print(result.text)
return result.text
except InvalidRequestError:
raise InvalidRequestError('请求数据出错')
def jsonAnalysis(self, a) -> Optional[str]:
print(a)
data = json.loads(a)
if data['retcode'] != 0:
raise InvalidRequestError('请求出错,原因:uid错误/不存在/国服之外')
else:
pass
character_info = 'Roles:\n'
character_list = data['data']['avatars']
for i in character_list:
if i["element"] == "None":
character_type = "无属性"
elif i["element"] == "Anemo":
character_type = "风属性"
elif i["element"] == "Pyro":
character_type = "火属性"
elif i["element"] == "Geo":
character_type = "岩属性"
elif i["element"] == "Electro":
character_type = "雷属性"
elif i["element"] == "Cryo":
character_type = "冰属性"
elif i["element"] == "Hydro":
character_type = "水属性"
else:
character_type = "草属性"
if i["name"] == "旅行者":
if i["image"].find("UI_AvatarIcon_PlayerGirl") != -1:
temp_text = f'* {i["name"]}:\n'
temp_text += f' - [萤——妹妹] {i["level"]}级 {character_type}\n'
elif i["image"].find("UI_AvatarIcon_PlayerBoy") != -1:
temp_text = f'* {i["name"]}:\n'
temp_text += f' - [空——哥哥] {i["level"]}级 {character_type}\n'
else:
temp_text = f'* {i["name"]}:\n'
temp_text += f' - [性别判断失败] {i["level"]}级 {character_type}\n'
else:
temp_text = f'* {i["name"]} {i["rarity"]}★角色:\n'
temp_text += f' - {i["level"]}级 好感度({i["fetter"]})级 {character_type}\n'
character_info += temp_text
a1 = data["data"]["stats"]["spiral_abyss"]
account_info = 'Account Info:\n'
account_info += f'- 活跃天数:{data["data"]["stats"]["active_day_number"]} 天\n'
account_info += f'- 达成成就:{data["data"]["stats"]["achievement_number"]} 个\n'
account_info += f'- 获得角色:{data["data"]["stats"]["avatar_number"]}个\n'
account_info += f'- 深渊螺旋:{"没打" if (data["data"]["stats"]["spiral_abyss"] == "-") else f"打到了{a1}"}\n'
account_info += f'* 收集:\n'
account_info += f' - 风神瞳{data["data"]["stats"]["anemoculus_number"]}个 岩神瞳{data["data"]["stats"]["geoculus_number"]}个\n'
account_info += f'* 解锁:\n'
account_info += f' - 传送点{data["data"]["stats"]["way_point_number"]}个 秘境{data["data"]["stats"]["domain_number"]}个\n'
account_info += f'* 共开启宝箱:\n'
account_info += f' - 普通:{data["data"]["stats"]["common_chest_number"]}个 精致:{data["data"]["stats"]["exquisite_chest_number"]}个\n'
account_info += f' - 珍贵:{data["data"]["stats"]["luxurious_chest_number"]}个 华丽:{data["data"]["stats"]["precious_chest_number"]}个'
return str(character_info + '\r\n' + account_info)
|