Um modelo python pydantic simples (dica de tipo e suporte para preenchimento automático) para Honkai: Star Rail analisou dados da API Mihomo.
URL da API: https://api.mihomo.me/sr_info_parsed/{UID}?lang={LANG}
pip install -U git+https://github.com/KT-Yeh/mihomo.git
Existem dois formatos de dados analisados:
V1:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en&version=v1
Buscando: use client.fetch_user_v1(800333171)
Modelo de dados: mihomo.models.v1.StarrailInfoParsedV1
Todos os modelos definidos no diretório mihomo/models/v1
.
V2:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en
Buscando: use client.fetch_user(800333171)
Modelo de dados: mihomo.models.StarrailInfoParsed
Todos os modelos definidos no diretório mihomo/models
.
Se você não quiser usar client.get_icon_url
para obter o URL da imagem sempre, você pode usar client.fetch_user(800333171, replace_icon_name_with_url=True)
para obter os dados analisados com URLs de ativos.
importar asynciofrom mihomo importar idioma, MihomoAPIfrom mihomo.models importar StarrailInfoParsedfrom mihomo.models.v1 importar StarrailInfoParsedV1client = MihomoAPI(idioma=Language.EN)async def v1(): dados: StarrailInfoParsedV1 = aguardar client.fetch_user_v1(800333171) print(f"Nome : {data.player.name}") print(f"Nível: {data.player.level}") print(f"Assinatura: {data.player.signature}") print(f"Conquistas: {data.player_details. conquistas}") print(f"Contagem de caracteres: {data.player_details.characters}") print(f"URL da foto do perfil: {client.get_icon_url(data.player.icon)}") para personagem em data.characters: print("-----------") print(f"Nome: {character.name}") print(f"Raridade: {character.rarity}") print(f" Nível: {character.level}") print(f"URL do avatar: {client.get_icon_url(character.icon)}") print(f"URL de visualização: {client.get_icon_url(character.preview)}") print(f"URL do retrato: {client.get_icon_url(character.portrait)}")async def v2(): data: StarrailInfoParsed = await client.fetch_user(800333171, replace_icon_name_with_url=True) print(f"Nome: {data.player .nome}") print(f"Nível: {data.player.level}") print(f"Assinatura: {data.player.signature}") print(f"URL da imagem do perfil: {data.player.avatar.icon}") para personagem em data.characters: print("------ -----") print(f"Nome: {personagem.nome}") print(f"Raridade: {personagem.raridade}") print(f"URL do retrato: {personagem.retrato}")asyncio.run(v1())asyncio.run(v2())
from mihomo import tools
dados = aguardar client.fetch_user (800333171) dados = ferramentas.remove_duplicate_character (dados)
old_data = aguardar client.fetch_user(800333171) # Mude os personagens no jogo e aguarde a atualização da API # ... new_data = aguarde client.fetch_user(800333171) data = tools.merge_character_data(new_data, old_data)
Tome pickle e json como exemplo
importar pickleimport zlibfrom mihomo importar MihomoAPI, Language, StarrailInfoParsedclient = MihomoAPI(idioma=Language.EN)data = aguardar client.fetch_user(800333171)# Savepickle_data = zlib.compress(pickle.dumps(data))print(len(pickle_data))json_data =data.json(by_alias=True, garantir_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(type(data_from_json))