From 51968448e5088c9c62bdcda3bf6516fc7b0d3fcc Mon Sep 17 00:00:00 2001 From: KT Date: Sat, 10 Jun 2023 11:05:38 +0800 Subject: [PATCH] docs: Update README.md and examples. --- README.md | 47 +++++++++++++++++++++++++++++++++++++++-------- examples/basic.py | 23 ++++++++++++++++++++--- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 77345dc03..f45f4f6dc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # mihomo -A simple Python Pydantic model (type hint and autocompletion support) for Honkai: Star Rail parsed data from the Mihomo API. +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} @@ -10,19 +10,35 @@ pip install -U git+https://github.com/KT-Yeh/mihomo.git ## Usage -### Basic -An example for https://api.mihomo.me/sr_info_parsed/800333171?lang=en +### Basic +There are two parsed data formats: +- V1: + - URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en&version=v1 + - Fetching: use `client.fetch_user_v1(800333171)` + - Data model: `mihomo.models.v1.StarrailInfoParsedV1` + - All models defined in `mihomo/models/v1` directory. +- V2: + - URL: https://api.mihomo.me/sr_info_parsed/800333171?lang=en + - Fetching: use `client.fetch_user(800333171)` + - Data model: `mihomo.models.StarrailInfoParsed` + - All models defined in `mihomo/models` directory. +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 ```py import asyncio -from mihomo import MihomoAPI, Language +from mihomo import Language, MihomoAPI +from mihomo.models import StarrailInfoParsed +from mihomo.models.v1 import StarrailInfoParsedV1 client = MihomoAPI(language=Language.EN) -async def main(): - data = await client.fetch_user(800333171) - + +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}") @@ -38,7 +54,22 @@ async def main(): print(f"Preview url: {client.get_icon_url(character.preview)}") print(f"Portrait url: {client.get_icon_url(character.portrait)}") -asyncio.run(main()) + +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 diff --git a/examples/basic.py b/examples/basic.py index 04bae385d..deff02910 100644 --- a/examples/basic.py +++ b/examples/basic.py @@ -1,12 +1,14 @@ 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 main(): - data = await client.fetch_user(800333171) +async def v1(): + data: StarrailInfoParsedV1 = await client.fetch_user_v1(800333171) print(f"Name: {data.player.name}") print(f"Level: {data.player.level}") @@ -24,4 +26,19 @@ async def main(): print(f"Portrait url: {client.get_icon_url(character.portrait)}") -asyncio.run(main()) +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())