mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-06-03 05:59:51 +08:00
141 lines
3.9 KiB
Python
141 lines
3.9 KiB
Python
import json
|
|
|
|
from httpx import AsyncClient
|
|
|
|
from .minigg_api import * # noqa: F401, F403
|
|
|
|
|
|
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)
|
|
data = json.loads(req.text)
|
|
return data
|
|
|
|
|
|
async def get_audio_info(name: str, audioid: str, language: str = 'cn') -> str:
|
|
"""
|
|
:说明:
|
|
访问miniggAPI获得原神角色音频信息。
|
|
:参数:
|
|
* name (str): 原神角色名称。
|
|
* audioid (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': audioid,
|
|
'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): 武器类型。
|
|
"""
|
|
if level:
|
|
params = {'query': name, 'stats': level}
|
|
else:
|
|
params = {'query': name}
|
|
async with AsyncClient() as client:
|
|
req = await client.get(url=MINIGG_WEAPON_URL, params=params)
|
|
data = json.loads(req.text)
|
|
return data
|
|
|
|
|
|
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})
|
|
data = json.loads(req.text)
|
|
return data
|
|
|
|
|
|
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 = 'https://info.minigg.cn/talents?query=' + name
|
|
elif mode == 'constellations':
|
|
url = 'https://info.minigg.cn/constellations?query=' + name
|
|
elif mode == 'costs':
|
|
url = baseurl + name + '&costs=1'
|
|
url2 = 'https://info.minigg.cn/talents?query=' + name + '&costs=1'
|
|
url3 = (
|
|
'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 = json.loads(req.text)
|
|
if 'errcode' in data2:
|
|
async with AsyncClient() as client_:
|
|
req = await client_.get(url=url3)
|
|
data2 = json.loads(req.text)
|
|
|
|
async with AsyncClient() as client:
|
|
req = await client.get(url=url)
|
|
try:
|
|
data = json.loads(req.text)
|
|
if 'errcode' in data:
|
|
async with AsyncClient() as client_:
|
|
req = await client_.get(url=url + '&matchCategories=true')
|
|
data = json.loads(req.text)
|
|
except:
|
|
data = None
|
|
return data if data2 is None else [data, data2]
|