Un modelo pydantic de Python simple (sugerencia de tipo y soporte de autocompletado) para Honkai: Star Rail analizó datos de la API Mihomo.
URL de API: https://api.mihomo.me/sr_info_parsed/{UID}?lang={LANG}
pip install -U git+https://github.com/KT-Yeh/mihomo.git
Hay dos formatos de datos analizados:
V1:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en&version=v1
Obteniendo: use client.fetch_user_v1(800333171)
Modelo de datos: mihomo.models.v1.StarrailInfoParsedV1
Todos los modelos definidos en el directorio mihomo/models/v1
.
V2:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en
Obteniendo: use client.fetch_user(800333171)
Modelo de datos: mihomo.models.StarrailInfoParsed
Todos los modelos definidos en el directorio mihomo/models
.
Si no desea utilizar client.get_icon_url
para obtener la URL de la imagen cada vez, puede usar client.fetch_user(800333171, replace_icon_name_with_url=True)
para obtener los datos analizados con las URL de los activos.
importar asyncio de mihomo importar idioma, MihomoAPI de mihomo.models importar StarrailInfoParsed de mihomo.models.v1 importar StarrailInfoParsedV1client = MihomoAPI(idioma=Language.EN)async def v1(): datos: StarrailInfoParsedV1 = await client.fetch_user_v1(800333171) print(f"Nombre : {data.player.name}") print(f"Nivel: {data.player.level}") print(f"Firma: {data.player.signature}") print(f"Logros: {data.player_details. logros}") print(f"Recuento de caracteres: {data.player_details.characters}") print(f"URL de la imagen de perfil: {client.get_icon_url(data.player.icon)}") para el carácter en data.characters: print("-----------") print(f"Nombre: {character.name}") print(f"Raridad: {personaje.raridad}") print(f"Nivel: {personaje.nivel}") print(f"URL de Avatar: {client.get_icon_url(personaje.icon)}") print(f"URL de vista previa: {client.get_icon_url(character.preview)}") print(f"URL de retrato: {client.get_icon_url(character.portrait)}")async def v2(): datos: StarrailInfoParsed = espera cliente .fetch_user(800333171, reemplazar_icon_name_with_url=Verdadero) print(f"Nombre: {data.player.name}") print(f"Nivel: {data.player.level}") print(f"Firma: {data.player.signature}") print(f"Perfil URL de la imagen: {data.player.avatar.icon}") para el carácter en data.characters: print("-----------") print(f"Nombre: {character.name}") print(f"Rareza: {personaje.raridad}") print(f"URL del retrato: {personaje.retrato}")asyncio.run(v1())asyncio.run(v2())
from mihomo import tools
datos = esperar client.fetch_user(800333171) datos = herramientas.remove_duplicate_character(datos)
old_data = await client.fetch_user(800333171) # Cambia los personajes en el juego y espera a que se actualice la API # ... new_data = await client.fetch_user(800333171) data = tools.merge_character_data(new_data, old_data)
Tome pickle y json como ejemplo
importar pickleimport zlibfrom mihomo import MihomoAPI, Language, StarrailInfoParsedclient = MihomoAPI(language=Language.EN)data = await client.fetch_user(800333171)# Savepickle_data = zlib.compress(pickle.dumps(data))print(len(pickle_data))json_data = data.json(by_alias=True, sure_ascii=False)print(len(json_data))# Loaddata_from_pickle = pickle.loads(zlib.decompress(pickle_data))data_from_json = StarrailInfoParsed.parse_raw(json_data)print(type(data_from_pickle))print( tipo(datos_de_json))