Honkai: Star Rail のシンプルな Python pydantic モデル (タイプヒントとオートコンプリートのサポート) は、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
解析されたデータ形式は 2 つあります。
V1:
URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=ja&version=v1
フェッチ: client.fetch_user_v1(800333171)
を使用します。
データモデル: mihomo.models.v1.StarrailInfoParsedV1
すべてのモデルはmihomo/models/v1
ディレクトリに定義されています。
V2:
URL:https://api.mihomo.me/sr_info_parsed/800333171?lang=ja
フェッチ: 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 言語、MihomoAPIfrom mihomo.models import StarrailInfoParsedfrom mihomo.models.v1 import StarrailInfoParsedV1client = MitomoAPI(言語=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"Characters count: {data.player_details.characters}") print(f"プロフィール画像の URL: {client.get_icon_url(data.player.icon)}") data.characters の文字: print("----------") print(f"名前: {character.name}") print(f"レア度: {character.rarity}") print(f"レベル: {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"名前: {character.name}") print(f"レア度: {character.rarity}") print(f"ポートレート URL: {character.portrait}")asyncio.run(v1())asyncio.run(v2())
from mihomo import tools
データ = await client.fetch_user(800333171) データ = tools.remove_duplicate_character(data)
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 MitomoAPI, Language, StarrailInfoParsedclient = MitomoAPI( 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, 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 (タイプ(data_from_json))