🐛 修复一些bug (#663) (#664)

This commit is contained in:
KimigaiiWuyi 2024-12-24 04:22:30 +08:00
parent 6ba0048195
commit e4ea3c3106
5 changed files with 44 additions and 11 deletions

View File

@ -2,6 +2,7 @@ import json
import asyncio
from typing import Tuple, Union, Literal
import aiofiles
from PIL import Image, ImageDraw
from gsuid_core.models import Event
@ -80,8 +81,10 @@ async def draw_cahrcard_list(
char_done_list = []
for char_name in char_list:
temp = {}
with open(uid_fold / f'{char_name}.json', 'r', encoding='UTF-8') as f:
raw_data = json.load(f)
async with aiofiles.open(
uid_fold / f'{char_name}.json', 'r', encoding='UTF-8'
) as f:
raw_data = json.loads(await f.read())
skill_list = raw_data['avatarSkill']

View File

@ -72,6 +72,16 @@ ELEMENT_MAP = {
'': 'Pyro',
}
ELEMENT_TEXT_MAP = {
'Anemo': '',
'Cryo': '',
'Dendro': '',
'Electro': '',
'Geo': '',
'Hydro': '',
'Pyro': '',
}
ICON_ELEMENT = {
'': 'Wind',
'': 'Ice',

View File

@ -30,6 +30,7 @@ from ..etc.base_info import (
ELEMENT_MAP,
ICON_ELEMENT,
PERCENT_ATTR,
ELEMENT_TEXT_MAP,
baseFightProp,
baseWeaponInfo,
)
@ -145,6 +146,7 @@ class Character:
except ConnectTimeout:
weapon_raw_data = -1
weapon_raw_data = -1
if isinstance(weapon_raw_data, int) or isinstance(
weapon_raw_data, List
):
@ -158,7 +160,13 @@ class Character:
weapon_id = _weapon_id
break
else:
return {}
for _weapon_id in weaponId2Name_data:
_weapon_name = weaponId2Name_data[_weapon_id]
if weapon in _weapon_name:
weapon_id = _weapon_id
break
else:
return {}
if weapon_id == 0:
return {}
@ -214,7 +222,7 @@ class Character:
].format(
*weapon_raw_data[
'r{}'.format(str(weapon_info['weaponAffix']))
]
]['values']
)
weapon_info['weaponEffect'] = re.sub(
r'</?c[^\u4e00-\u9fa5/d]+>',
@ -300,6 +308,8 @@ class Character:
self.char_id = await name_to_avatar_id(char_name_covert)
if not self.char_id and char_name != '旅行者':
return {}
elif char_name == '旅行者':
self.char_id = '10000007'
'''
char_raw = await get_character_info(name=char_name_covert)
@ -315,7 +325,10 @@ class Character:
char_data = await get_character_stats(char_name_covert, char_level)
'''
char_raw = char_data = await convert_ambr_to_minigg(self.char_id)
char_raw = char_data = await convert_ambr_to_minigg(
self.char_id,
ELEMENT_TEXT_MAP[self.char_element],
)
if (
isinstance(char_data, List)

View File

@ -14,6 +14,9 @@ pattern = r'^[\u4e00-\u9fa5]'
async def refresh_player_list(uid: str, is_force: bool = False) -> str:
player = PLAYER_PATH / uid
if not player.exists():
return f'该UID{uid}对应面板数据不存在, 请先进行 [刷新面板]!'
path = player / 'artifacts.json'
all_artifacts = deepcopy(ARTIFACT_DATA)
if not path.exists():

View File

@ -3,6 +3,7 @@ import json
from typing import List, Union, Optional, TypedDict, cast
import aiofiles
from gsuid_core.logger import logger
from gsuid_core.utils.api.minigg.models import CharacterTalents
from gsuid_core.utils.api.ambr.request import (
get_ambr_char_data,
@ -115,7 +116,7 @@ class ConvertCharacter(TypedDict):
async def convert_exist_data_to_char(
char_id: Union[str, int]
char_id: Union[str, int], element: Optional[str] = None
) -> ConvertCharacter:
path = CHAR_DATA_PATH / f'{char_id}.json'
if path.exists():
@ -124,6 +125,7 @@ async def convert_exist_data_to_char(
else:
raw_data = await get_ambr_char_data(char_id)
if raw_data is None:
logger.error(f'[AmbrData] 未找到该角色{char_id}/数据无法下载!')
raise Exception('[AmbrData] 未找到该角色/数据无法下载!')
# 保存
async with aiofiles.open(path, 'w', encoding='utf-8') as f:
@ -146,8 +148,10 @@ async def convert_exist_data_to_char(
'title': raw_data['fetter']['title'],
'rarity': raw_data['rank'],
'weapontype': WEAPON_TYPE[raw_data['weaponType']],
'elementText': ELEMENT_MAP[raw_data['element']],
'element': ELEMENT_MAP[raw_data['element']],
'elementText': (
element if element else ELEMENT_MAP[raw_data['element']]
),
'element': element if element else ELEMENT_MAP[raw_data['element']],
'images': {'namesideicon': raw_data['icon']}, # 暂时适配
'substatText': substatText,
'hp': raw_data['upgrade']['prop'][0]['initValue']
@ -229,7 +233,7 @@ async def convert_ambr_to_weapon(
effect_up[affix],
)
result[f'r{index+1}'] = {'description': effect_desc}
result[f'r{index+1}'] = {'description': effect_desc, 'values': []}
else:
if index != 0:
result['effectTemplateRaw'] = result[f'r{index+1}']['description']
@ -246,9 +250,9 @@ async def convert_ambr_to_weapon(
async def convert_ambr_to_minigg(
char_id: Union[str, int]
char_id: Union[str, int], element
) -> Optional[ConvertCharacter]:
return await convert_exist_data_to_char(char_id)
return await convert_exist_data_to_char(char_id, element)
async def convert_ambr_to_talent(