This commit is contained in:
qwerdvd 2023-10-31 15:08:02 +08:00
parent 05cf23ad74
commit 6cd21fab7d
No known key found for this signature in database
GPG Key ID: A3AF89C783404769

View File

@ -36,15 +36,15 @@ from starrail_damage_cal.mihomo.requests import get_char_card_info
async def api_to_dict( async def api_to_dict(
sr_uid: Union[str, None] = None, uid: Union[str, None] = None,
mihomo_raw: Union[MihomoData, None] = None, mihomo_raw: Union[MihomoData, None] = None,
save_path: Union[Path, None] = None, save_path: Union[Path, None] = None,
) -> Tuple[List[str], Dict[str, Dict[str, Any]]]: ) -> Tuple[List[str], Dict[str, Dict[str, Any]]]:
if not mihomo_raw: if not mihomo_raw:
if not sr_uid: if not uid:
raise KeyError raise KeyError
try: try:
sr_data = await get_char_card_info(sr_uid) sr_data = await get_char_card_info(uid)
except Exception as e: # noqa: BLE001 except Exception as e: # noqa: BLE001
raise MihomoRequestError from e raise MihomoRequestError from e
else: else:
@ -52,18 +52,18 @@ async def api_to_dict(
PlayerDetailInfo = sr_data.detailInfo PlayerDetailInfo = sr_data.detailInfo
if save_path: if save_path and uid:
path = save_path / str(sr_uid) path = save_path / uid
path.mkdir(parents=True, exist_ok=True) path.mkdir(parents=True, exist_ok=True)
with Path.open(path / f"{sr_uid!s}.json", "wb") as file: with Path.open(path / f"{uid!s}.json", "wb") as file:
file.write(msgjson.format(msgjson.encode(PlayerDetailInfo), indent=4)) file.write(msgjson.format(msgjson.encode(PlayerDetailInfo), indent=4))
with Path.open(path / "rawData.json", "wb") as file: with Path.open(path / "rawData.json", "wb") as file:
file.write(msgjson.format(msgjson.encode(sr_data), indent=4)) file.write(msgjson.format(msgjson.encode(sr_data), indent=4))
uid = str(PlayerDetailInfo.uid) player_uid = str(PlayerDetailInfo.uid)
if sr_data.detailInfo is None: if sr_data.detailInfo is None:
raise CharacterShowcaseNotOpenError(uid) raise CharacterShowcaseNotOpenError(player_uid)
char_name_list: List[str] = [] char_name_list: List[str] = []
char_id_list: List[str] = [] char_id_list: List[str] = []
@ -76,7 +76,7 @@ async def api_to_dict(
char_data, avatarName = await get_data( char_data, avatarName = await get_data(
PlayerDetailInfo.assistAvatarDetail, PlayerDetailInfo.assistAvatarDetail,
nickName, nickName,
uid, player_uid,
save_path, save_path,
) )
char_name_list.append(avatarName) char_name_list.append(avatarName)
@ -92,7 +92,7 @@ async def api_to_dict(
char_data, avatarName = await get_data( char_data, avatarName = await get_data(
char, char,
nickName, nickName,
uid, player_uid,
save_path, save_path,
) )
char_name_list.append(avatarName) char_name_list.append(avatarName)
@ -100,17 +100,17 @@ async def api_to_dict(
char_data_list[str(char.avatarId)] = char_data char_data_list[str(char.avatarId)] = char_data
if not char_name_list: if not char_name_list:
raise CharacterShowcaseNotOpenError(uid) raise CharacterShowcaseNotOpenError(player_uid)
return (char_id_list, char_data_list) return (char_id_list, char_data_list)
async def get_data( async def get_data(
char: Avatar, nick_name: str, sr_uid: str, save_path: Union[Path, None] = None char: Avatar, nick_name: str, uid: str, save_path: Union[Path, None] = None
): ):
# 处理基本信息 # 处理基本信息
char_data = { char_data = {
"uid": str(sr_uid), "uid": uid,
"nickName": nick_name, "nickName": nick_name,
"avatarId": char.avatarId, "avatarId": char.avatarId,
"avatarName": avatarId2Name[str(char.avatarId)], "avatarName": avatarId2Name[str(char.avatarId)],
@ -305,8 +305,10 @@ async def get_data(
char_data["equipmentInfo"] = equipment_info char_data["equipmentInfo"] = equipment_info
if save_path: if save_path:
save_path.mkdir(parents=True, exist_ok=True) path = save_path / str(uid)
with Path.open(save_path / f"{avatarName}.json", "w", encoding="UTF-8") as file: path.mkdir(parents=True, exist_ok=True)
path.mkdir(parents=True, exist_ok=True)
with Path.open(path / f"{avatarName}.json", "w", encoding="UTF-8") as file:
json.dump(char_data, file, ensure_ascii=False) json.dump(char_data, file, ensure_ascii=False)
return char_data, avatarName return char_data, avatarName