1
This commit was merged in pull request #1.
This commit is contained in:
@@ -4,6 +4,7 @@ from fastapi import APIRouter, Path, Query
|
||||
from api.core.Response import response
|
||||
from api.core.Redis import get_redis_info
|
||||
from api.dp import RedisDep
|
||||
from api.utils.skill_detail import normalize_skill_detail, skill_detail_for_level
|
||||
import re
|
||||
from typing import Annotated
|
||||
|
||||
@@ -23,19 +24,6 @@ router = APIRouter()
|
||||
register_gzip_request(router)
|
||||
|
||||
|
||||
def replace_placeholders(template):
|
||||
# 匹配 <int>、<float>、<float1>、<float2> 等
|
||||
pattern = re.compile(r'<(int|float\d*)>')
|
||||
idx = 0
|
||||
|
||||
def repl(match):
|
||||
nonlocal idx
|
||||
idx += 1
|
||||
return f'{{value{idx}}}'
|
||||
|
||||
return pattern.sub(repl, template)
|
||||
|
||||
|
||||
@router.get('/skills/', operation_id='skillsList', response_model=SearchSkillResponse)
|
||||
async def get_skills_list(
|
||||
redis: RedisDep,
|
||||
@@ -151,27 +139,10 @@ async def get_cn_skill_info(
|
||||
encoding='utf-8',
|
||||
) as f:
|
||||
skill_data = json.load(f)
|
||||
if 'levelInfo' in skill_data and 'optionDesc' in skill_data['levelInfo'] and skill_data['levelInfo']['optionDesc'] is not None:
|
||||
skill_data['levelInfo']['optionDesc'] = replace_placeholders(skill_data['levelInfo']['optionDesc'])
|
||||
return skill_data
|
||||
return normalize_skill_detail(skill_data)
|
||||
|
||||
skill_info = get_redis_info(redis, key, get_skill_info)
|
||||
if level is not None:
|
||||
level = max(0, min(level, skill_info.get('maxLevel', 0)))
|
||||
if 'levelInfo' in skill_info and 'rows' in skill_info['levelInfo']:
|
||||
detail = list(filter(lambda x: x['level'] == level, skill_info['levelInfo']['rows']))
|
||||
if detail and len(detail) > 0:
|
||||
skill_info['levelInfo'].update(detail[0])
|
||||
skill_info['levelInfo']['detail'] = skill_info['levelInfo'].get('optionDesc', '')
|
||||
for key in skill_info['levelInfo']['optionValue'].keys():
|
||||
skill_info['levelInfo']['detail'] = skill_info['levelInfo']['detail'].replace(
|
||||
f'{{{key}}}',
|
||||
str(skill_info['levelInfo']['optionValue'][key]),
|
||||
)
|
||||
del skill_info['levelInfo']['rows']
|
||||
skill_info['attribute'] = {}
|
||||
skill_info['attribute'].update(skill_info['levelInfo'])
|
||||
del skill_info['levelInfo']
|
||||
skill_info = skill_detail_for_level(skill_info, level)
|
||||
except FileNotFoundError:
|
||||
return response(
|
||||
code=404,
|
||||
|
||||
Reference in New Issue
Block a user