🐛 修复导入抽卡记录的问题

修复换用 msgspec 后会导致第一次导入抽卡记录出现错误
This commit is contained in:
Jerry痞孓 2023-09-27 11:26:46 +08:00 committed by qwerdvd
parent 46f264e752
commit c9e2e94876

View File

@ -3,10 +3,13 @@ import asyncio
from pathlib import Path from pathlib import Path
from urllib import parse from urllib import parse
from datetime import datetime from datetime import datetime
from typing import Dict, Optional from typing import Dict, List, Optional
import msgspec
from ..utils.mys_api import mys_api from ..utils.mys_api import mys_api
from ..utils.resource.RESOURCE_PATH import PLAYER_PATH from ..utils.resource.RESOURCE_PATH import PLAYER_PATH
from ..sruid_utils.api.mys.models import SingleGachaLog
gacha_type_meta_data = { gacha_type_meta_data = {
'群星跃迁': ['1'], '群星跃迁': ['1'],
@ -19,6 +22,7 @@ gacha_type_meta_data = {
async def get_new_gachalog_by_link( async def get_new_gachalog_by_link(
uid: str, gacha_url: str, full_data: Dict, is_force: bool uid: str, gacha_url: str, full_data: Dict, is_force: bool
): ):
full_data = msgspec.convert(full_data, type=Dict[str, List[SingleGachaLog]])
temp = [] temp = []
for gacha_name in gacha_type_meta_data: for gacha_name in gacha_type_meta_data:
for gacha_type in gacha_type_meta_data[gacha_name]: for gacha_type in gacha_type_meta_data[gacha_name]:
@ -46,7 +50,7 @@ async def get_new_gachalog_by_link(
temp = [] temp = []
break break
if len(full_data[gacha_name]) >= 1: if len(full_data[gacha_name]) >= 1:
if int(data[-1].id) <= int(full_data[gacha_name][0]['id']): if int(data[-1].id) <= int(full_data[gacha_name][0].id):
full_data[gacha_name].extend(data) full_data[gacha_name].extend(data)
else: else:
full_data[gacha_name][0:0] = data full_data[gacha_name][0:0] = data
@ -137,7 +141,7 @@ async def save_gachalogs(
result['weapon_gacha_num'] = len(raw_data['光锥跃迁']) result['weapon_gacha_num'] = len(raw_data['光锥跃迁'])
for i in ['群星跃迁', '角色跃迁', '光锥跃迁']: for i in ['群星跃迁', '角色跃迁', '光锥跃迁']:
if len(raw_data[i]) > 1: if len(raw_data[i]) > 1:
raw_data[i].sort(key=lambda x: (-int(x['id']))) raw_data[i].sort(key=lambda x: (-int(x.id)))
result['data'] = raw_data result['data'] = raw_data
# 计算数据 # 计算数据
@ -148,8 +152,9 @@ async def save_gachalogs(
all_add = normal_add + char_add + weapon_add + begin_gacha_add all_add = normal_add + char_add + weapon_add + begin_gacha_add
# 保存文件 # 保存文件
result = msgspec.to_builtins(result)
with Path.open(gachalogs_path, 'w', encoding='UTF-8') as file: with Path.open(gachalogs_path, 'w', encoding='UTF-8') as file:
json.dump(result, file, ensure_ascii=False) json.dump(result, file, indent=2, ensure_ascii=False)
# 回复文字 # 回复文字
if all_add == 0: if all_add == 0: