Skip to content

Latest commit

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mihomo

A simple python pydantic model (type hint and autocompletion support) for Honkai: Star Rail parsed data from the Mihomo API.

API url: https://api.mihomo.me/sr_info_parsed/{UID}?lang={LANG}

Installation

pip install -U git+https://github.com/KT-Yeh/mihomo.git

Usage

Basic

There are two parsed data formats:

If you don't want to use client.get_icon_url to get the image url everytime, you can use client.fetch_user(800333171, replace_icon_name_with_url=True) to get the parsed data with asset urls.

Example

importasynciofrommihomoimportLanguage, MihomoAPIfrommihomo.modelsimportStarrailInfoParsedfrommihomo.models.v1importStarrailInfoParsedV1client=MihomoAPI(language=Language.EN)
asyncdefv1():
data: StarrailInfoParsedV1=awaitclient.fetch_user_v1(800333171)
print(f"Name: {data.player.name}")
print(f"Level: {data.player.level}")
print(f"Signature: {data.player.signature}")
print(f"Achievements: {data.player_details.achievements}")
print(f"Characters count: {data.player_details.characters}")
print(f"Profile picture url: {client.get_icon_url(data.player.icon)}")
forcharacterindata.characters:
print("-----------")
print(f"Name: {character.name}")
print(f"Rarity: {character.rarity}")
print(f"Level: {character.level}")
print(f"Avatar url: {client.get_icon_url(character.icon)}")
print(f"Preview url: {client.get_icon_url(character.preview)}")
print(f"Portrait url: {client.get_icon_url(character.portrait)}")
asyncdefv2():
data: StarrailInfoParsed=awaitclient.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"Profile picture url: {data.player.avatar.icon}")
forcharacterindata.characters:
print("-----------")
print(f"Name: {character.name}")
print(f"Rarity: {character.rarity}")
print(f"Portrait url: {character.portrait}")
asyncio.run(v1())
asyncio.run(v2())

Tools

from mihomo import tools

Remove Duplicate Character

data=awaitclient.fetch_user(800333171)
data=tools.remove_duplicate_character(data)

Merge Character Data

old_data=awaitclient.fetch_user(800333171)
# Change characters in game and wait for the API to refresh# ...new_data=awaitclient.fetch_user(800333171)
data=tools.merge_character_data(new_data, old_data)

Data Persistence

Take pickle and json as an example

importpickleimportzlibfrommihomoimportMihomoAPI, Language, StarrailInfoParsedclient=MihomoAPI(language=Language.EN)
data=awaitclient.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))

About

A simple Python Pydantic model for Honkai: Star Rail parsed data from the Mihomo API.

Topics

Resources

Stars

33.4k stars

Watchers

145 watching

Forks

Releases

Packages

Used by

Contributors

Languages