mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-05-31 04:30:29 +08:00
137 lines
3.8 KiB
Python
137 lines
3.8 KiB
Python
from httpx import AsyncClient
|
|
|
|
from .minigg_api import (
|
|
MINIGG_ENKA_URL,
|
|
MINIGG_MISC_URL,
|
|
MINIGG_AUDIO_URL,
|
|
MINIGG_WEAPON_URL,
|
|
)
|
|
|
|
|
|
async def get_minigg_enka_info(uid: str):
|
|
"""
|
|
:说明:
|
|
返回角色信息。
|
|
:参数:
|
|
* uid (str): 玩家uid。
|
|
:返回:
|
|
* dict: 角色信息。
|
|
"""
|
|
url = MINIGG_ENKA_URL.format(uid)
|
|
async with AsyncClient() as client:
|
|
req = await client.get(url=url)
|
|
return req.json()
|
|
|
|
|
|
async def get_audio_info(
|
|
name: str, audio_id: str, language: str = 'cn'
|
|
) -> str:
|
|
"""
|
|
:说明:
|
|
访问miniggAPI获得原神角色音频信息。
|
|
:参数:
|
|
* name (str): 原神角色名称。
|
|
* audio_id (str): 语音id。
|
|
* language (str): 默认为cn。
|
|
:返回:
|
|
* req.text (str): url。
|
|
"""
|
|
async with AsyncClient() as client:
|
|
req = await client.get(
|
|
url=MINIGG_AUDIO_URL,
|
|
params={
|
|
'characters': name,
|
|
'audioid': audio_id,
|
|
'language': language,
|
|
},
|
|
)
|
|
return req.text
|
|
|
|
|
|
async def get_weapon_info(name, level=None) -> dict:
|
|
"""
|
|
:说明:
|
|
访问miniggAPI获得原神武器信息。
|
|
https://info.minigg.cn/weapons?query=飞雷
|
|
:参数:
|
|
* name (str): 武器名称。
|
|
* level (str): 武器等级。
|
|
:返回:
|
|
* data (dict): 武器信息。
|
|
:Template:
|
|
* data['name'] (str): 武器名称。
|
|
* data['description'] (str): 武器描述。
|
|
* data['weapontype'] (str): 武器类型。
|
|
"""
|
|
params = {'query': name, 'stats': level} if level else {'query': name}
|
|
async with AsyncClient() as client:
|
|
req = await client.get(url=MINIGG_WEAPON_URL, params=params)
|
|
return req.json()
|
|
|
|
|
|
async def get_misc_info(mode: str, name: str):
|
|
"""
|
|
:说明:
|
|
一些杂项信息。
|
|
:参数:
|
|
* name (str): 'enemies', 'foods', 'artifacts'。
|
|
* name (str): 参数。
|
|
:返回:
|
|
* data (str): 获取数据信息。
|
|
"""
|
|
url = MINIGG_MISC_URL.format(mode)
|
|
async with AsyncClient() as client:
|
|
req = await client.get(url=url, params={'query': name})
|
|
return req.json()
|
|
|
|
|
|
async def get_char_info(name, mode='char', level=None):
|
|
"""
|
|
:说明:
|
|
返回角色信息。
|
|
:参数:
|
|
* name (str): 角色名称。
|
|
* mode (str): 'char', 'talents', 'costs'。
|
|
* level (str): 角色等级。
|
|
:返回:
|
|
* data (str): 获取数据信息。
|
|
"""
|
|
url2 = None
|
|
url3 = ''
|
|
data2 = None
|
|
baseurl = 'https://info.minigg.cn/characters?query='
|
|
if mode == 'talents':
|
|
url = f'https://info.minigg.cn/talents?query={name}'
|
|
elif mode == 'constellations':
|
|
url = f'https://info.minigg.cn/constellations?query={name}'
|
|
elif mode == 'costs':
|
|
url = baseurl + name + '&costs=1'
|
|
url2 = f'https://info.minigg.cn/talents?query={name}&costs=1'
|
|
url3 = (
|
|
f'https://info.minigg.cn/talents?query={name}&matchCategories=true'
|
|
)
|
|
|
|
elif level:
|
|
url = baseurl + name + '&stats=' + level
|
|
else:
|
|
url = baseurl + name
|
|
if url2:
|
|
async with AsyncClient() as client:
|
|
req = await client.get(url=url2)
|
|
data2 = req.json()
|
|
if 'errcode' in data2:
|
|
async with AsyncClient() as client_:
|
|
req = await client_.get(url=url3)
|
|
data2 = req.json()
|
|
async with AsyncClient() as client:
|
|
req = await client.get(url=url)
|
|
try:
|
|
data = req.json()
|
|
if 'errcode' in data:
|
|
async with AsyncClient() as client_:
|
|
req = await client_.get(url=f'{url}&matchCategories=true')
|
|
data = req.json()
|
|
except Exception:
|
|
data = None
|
|
return data if data2 is None else [data, data2]
|