mihomo README

The project's README from github.com/MetaCubeX/mihomo. As one markdown file: README.md.

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

import asyncio

from mihomo import Language, MihomoAPI
from mihomo.models import StarrailInfoParsed
from mihomo.models.v1 import StarrailInfoParsedV1

client = MihomoAPI(language=Language.EN)


async def v1():
    data: StarrailInfoParsedV1 = await client.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)}")
    for character in data.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)}")


async def v2():
    data: StarrailInfoParsed = await 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"Profile picture url: {data.player.avatar.icon}")
    for character in data.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 = await client.fetch_user(800333171)
    data = tools.remove_duplicate_character(data)

Merge Character Data

    old_data = await client.fetch_user(800333171)

    # Change characters in game and wait for the API to refresh
    # ...

    new_data = await client.fetch_user(800333171)
    data = tools.merge_character_data(new_data, old_data)

Data Persistence

Take pickle and json as an example

import pickle
import zlib
from mihomo import MihomoAPI, Language, StarrailInfoParsed

client = MihomoAPI(language=Language.EN)
data = await client.fetch_user(800333171)

# Save
pickle_data = zlib.compress(pickle.dumps(data))
print(len(pickle_data))
json_data = data.json(by_alias=True, ensure_ascii=False)
print(len(json_data))

# Load
data_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))

mihomo (MetaCubeX/mihomo)

Searching Database…

34.9K ·GitHub
Что это такое?Это библиотека на Python, построенная на Pydantic. Она описывает и разбирает данные, которые возвращает API Mihomo для Honkai: Star Rail, и даёт типизированный доступ к разобранным данным о персонажах и витрине игрока с поддержкой автодополнения.
Это отдельное приложение или библиотека, которую я импортирую в свой код?Это чистая библиотека на Python, которую вы импортируете и вызываете напрямую, а не приложение и не сервер. Вы создаёте клиент и вызываете такие методы, как fetchuser или fetchuserv1, чтобы получить объекты моделей Pydantic.
Как получить данные игрока Honkai: Star Rail с помощью этой библиотеки?После установки вызовите client.fetchuser(800333171) для схемы V2 или client.fetchuserv1(800333171) для старой схемы V1, передав игровой UID игрока.
Нужно ли мне самому отдельно получать URL иконок ресурсов?Нет, этот шаг можно пропустить: вызовите client.fetchuser(800333171, replaceiconnamewithurl=True), и URL ресурсов заполнятся автоматически, без отдельного вызова client.geticonurl.
Чем отличаются форматы данных V1 и V2?V1 и V2 — это две разные схемы разобранных данных из API Mihomo. У каждой свои модели (StarrailInfoParsedV1 и StarrailInfoParsed) и свои методы получения. Они определены в разных каталогах внутри mihomo/models.
Какие служебные инструменты есть в библиотеке, кроме получения данных?В модуле mihomo.tools есть вспомогательные функции: для удаления дублирующихся персонажей и для объединения данных о персонажах из нескольких запросов.
Можно ли сохранять полученные данные игрока локально?Да, в README есть пример сохранения с помощью модулей pickle и json из Python: разобранные данные можно записать и потом загрузить обратно.
Creator
MetaCubeX
Size
13.5 MB
Stars
34.9K
Age
5y
Commits · 90 Days