Простая пидантическая модель Python (подсказка типа и поддержка автодополнения) для Honkai: Star Rail анализирует данные из API Mihomo.
URL-адрес API: https://api.mihomo.me/sr_info_parsed/{UID}?lang={LANG}
pip install -U git+https://github.com/KT-Yeh/mihomo.git
Существует два формата анализируемых данных:
В1:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en&version=v1
Извлечение: используйте client.fetch_user_v1(800333171)
Модель данных: mihomo.models.v1.StarrailInfoParsedV1
Все модели определены в каталоге mihomo/models/v1
.
В2:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en
Извлечение: используйте client.fetch_user(800333171)
Модель данных: mihomo.models.StarrailInfoParsed
Все модели определены в каталоге mihomo/models
.
Если вы не хотите каждый раз использовать client.get_icon_url
для получения URL-адреса изображения, вы можете использовать client.fetch_user(800333171, replace_icon_name_with_url=True)
для получения проанализированных данных с URL-адресами активов.
import asynciofrom mihomo import Language, MihomoAPIfrom mihomo.models import StarrailInfoParsedfrom mihomo.models.v1 import StarrailInfoParsedV1client = MihomoAPI(language=Language.EN)async def v1(): data: StarrailInfoParsedV1 = await client.fetch_user_v1(800333171) print(f"Name : {data.player.name}") print(f"Уровень: {data.player.level}") print(f"Подпись: {data.player.signature}") print(f"Достижения: {data.player_details .achievements}") print(f"Количество символов: {data.player_details.characters}") print(f"URL изображения профиля: {client.get_icon_url(data.player.icon)}") для персонажа в data.characters: print("-----------") print(f"Name: {character.name}") print(f"Rarity: {character.rarity}") print(f"Level: {character .level}") print(f"URL аватара: {client.get_icon_url(character.icon)}") print(f"URL предварительного просмотра: {client.get_icon_url(character.preview)}") print(f"URL портрета: {client.get_icon_url(character.portrait)}")async def v2(): data: StarrailInfoParsed = await client.fetch_user(800333171, replace_icon_name_with_url=True) print(f"Name: {data.player.name}") print( f"Уровень: {data.player.level}") print(f"Подпись: {data.player.signature}") print(f"URL изображения профиля: {data.player.avatar.icon}") для персонажа в data.characters: print("-----------") print(f"Name: {character.name}") print(f"Rarity: {character.rarity}") print(f" URL-адрес портрета: {character.portrait}")asyncio.run(v1())asyncio.run(v2())
from mihomo import tools
данные = ждут client.fetch_user(800333171) данные = инструменты.remove_duulate_character(данные)
old_data = await client.fetch_user(800333171) # Измените персонажей в игре и дождитесь обновления API # ... new_data = await client.fetch_user(800333171) data = Tools.merge_character_data(new_data, old_data)
Возьмем Pickle и JSON в качестве примера.
import 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, обеспечения_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 (тип(data_from_json))