Un modèle pydantique python simple (prise en charge des indices de type et de la saisie semi-automatique) pour Honkai : Star Rail a analysé les données de l'API Mihomo.
URL de l'API : https://api.mihomo.me/sr_info_parsed/{UID}?lang={LANG}
pip install -U git+https://github.com/KT-Yeh/mihomo.git
Il existe deux formats de données analysées :
V1 :
URL : https://api.mihomo.me/sr_info_parsed/800333171?lang=en&version=v1
Récupération : utilisez client.fetch_user_v1(800333171)
Modèle de données : mihomo.models.v1.StarrailInfoParsedV1
Tous les modèles définis dans le répertoire mihomo/models/v1
.
V2 :
URL : https://api.mihomo.me/sr_info_parsed/800333171?lang=fr
Récupération : utilisez client.fetch_user(800333171)
Modèle de données : mihomo.models.StarrailInfoParsed
Tous les modèles définis dans le répertoire mihomo/models
.
Si vous ne souhaitez pas utiliser client.get_icon_url
pour obtenir l'URL de l'image à chaque fois, vous pouvez utiliser client.fetch_user(800333171, replace_icon_name_with_url=True)
pour obtenir les données analysées avec les URL des actifs.
import asynciofrom mihomo import Language, MihomoAPIfrom mihomo.models import StarrailInfoParsedfrom mihomo.models.v1 import StarrailInfoParsedV1client = MihomoAPI(langue=Language.EN)async def v1() : data: StarrailInfoParsedV1 = wait client.fetch_user_v1(800333171) print(f"Name : {data.player.name}") print(f"Niveau : {data.player.level}") print(f"Signature : {data.player.signature}") print(f"Réalisations : {data.player_details .achievements}") print(f"Nombre de caractères : {data.player_details.characters}") print(f"URL de la photo de profil : {client.get_icon_url(data.player.icon)}") pour le personnage dans data.characters : print("-----------") print(f"Nom : {caractère.nom}") print(f"Rarité : {caractère.rarité}") print(f"Niveau : {caractère .level}") print(f"URL de l'avatar : {client.get_icon_url(character.icon)}") print(f"URL d'aperçu : {client.get_icon_url(character.preview)}") print(f"URL du portrait : {client.get_icon_url(character.portrait)}")async def v2() : data : StarrailInfoParsed = wait client.fetch_user(800333171, replace_icon_name_with_url=True) print(f"Name : {data.player.name}") print( f"Niveau : {data.player.level}") print(f"Signature : {data.player.signature}") print(f"URL de la photo de profil : {data.player.avatar.icon}") pour le personnage dans data.characters: print("-----------") print(f"Nom : {character.name}") print(f"Rarité : {character.rarity}") print(f" URL du portrait : {character.portrait}")asyncio.run(v1())asyncio.run(v2())
from mihomo import tools
data = attendre client.fetch_user (800333171) data = tools.remove_duplicate_character (data)
old_data = wait client.fetch_user(800333171) # Changez les personnages dans le jeu et attendez que l'API soit actualisée # ... new_data = wait client.fetch_user(800333171) data = tools.merge_character_data(new_data, old_data)
Prenons l'exemple de pickle et json
importer pickleimport zlibfrom mihomo importer MihomoAPI, Language, StarrailInfoParsedclient = MihomoAPI(langue=Language.EN)data = wait client.fetch_user(800333171)# Savepickle_data = zlib.compress(pickle.dumps(data))print(len(pickle_data))json_data = data.json(by_alias=True, Ensure_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))