Ein einfaches Python-Pydantic-Modell (Typhinweis und Unterstützung für automatische Vervollständigung) für Honkai: Star Rail analysierte Daten von der Mihomo-API.
API-URL: https://api.mihomo.me/sr_info_parsed/{UID}?lang={LANG}
pip install -U git+https://github.com/KT-Yeh/mihomo.git
Es gibt zwei geparste Datenformate:
V1:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en&version=v1
Abrufen: Verwenden Sie client.fetch_user_v1(800333171)
Datenmodell: mihomo.models.v1.StarrailInfoParsedV1
Alle im Verzeichnis mihomo/models/v1
definierten Modelle.
V2:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en
Abrufen: client.fetch_user(800333171)
verwenden
Datenmodell: mihomo.models.StarrailInfoParsed
Alle im Verzeichnis mihomo/models
definierten Modelle.
Wenn Sie client.get_icon_url
nicht jedes Mal verwenden möchten, um die Bild-URL abzurufen, können Sie client.fetch_user(800333171, replace_icon_name_with_url=True)
verwenden, um die analysierten Daten mit Asset-URLs abzurufen.
import asynciofrom mihomo import Language, MihomoAPIfrom mihomo.models import StarrailInfoParsedfrom mihomo.models.v1 import StarrailInfoParsedV1client = MihomoAPI(sprache=Language.EN)async def v1(): data: StarrailInfoParsedV1 = waiting client.fetch_user_v1(800333171) print(f"Name : {data.player.name}") print(f"Level: {data.player.level}") print(f"Signatur: {data.player.signature}") print(f"Erfolge: {data.player_details .achievements}") print(f"Anzahl der Charaktere: {data.player_details.characters}") print(f"Profilbild-URL: {client.get_icon_url(data.player.icon)}") für Charakter in data.characters: print("-----------") print(f"Name: {character.name}") print(f"Rarity: {character.rarity}") print(f"Level: {character.name}") .level}") print(f"Avatar-URL: {client.get_icon_url(character.icon)}") print(f"Vorschau-URL: {client.get_icon_url(character.preview)}") print(f"Portrait-URL: {client.get_icon_url(character.portrait)}")async def v2(): data: StarrailInfoParsed = waiting client.fetch_user(800333171, replace_icon_name_with_url=True) print(f"Name: {data.player.name}") print( f"Level: {data.player.level}") print(f"Signature: {data.player.signature}") print(f"Profilbild-URL: {data.player.avatar.icon}") für Charakter in data.characters: print("-----------") print(f"Name: {character.name}") print(f"Rarity: {character.rarity}") print(f" Porträt-URL: {character.portrait}")asyncio.run(v1())asyncio.run(v2())
from mihomo import tools
data = wait client.fetch_user(800333171) data = tools.remove_duplicate_character(data)
old_data = Warten auf client.fetch_user(800333171) # Charaktere im Spiel ändern und warten, bis die API aktualisiert wird # ... new_data = Warten auf client.fetch_user(800333171) data = tools.merge_character_data(new_data, old_data)
Nehmen Sie als Beispiel Pickle und JSON
import pickleimport zlibfrom mihomo import MihomoAPI, Sprache, StarrailInfoParsedclient = MihomoAPI(Sprache=Sprache.EN)Daten = Warten auf 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 (Typ(data_from_json))