Skip to content

Commit

Permalink
docs: add examples and update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
KT-Yeh committed Jun 3, 2023
1 parent 2894966 commit 8dcd3b6
Show file tree
Hide file tree
Showing 5 changed files with 122 additions and 4 deletions.
50 changes: 47 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ 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

```py
Expand All @@ -30,11 +32,53 @@ async def main():
for character in data.characters:
print("-----------")
print(f"Name: {character.name}")
print(f"rarity: {character.rarity}")
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)}")
print(f"Portrait url: {client.get_icon_url(character.portrait)}")

asyncio.run(main())
```
```

### Tools
`from mihomo import tools`
#### Remove Duplicate Character
```py
data = await client.fetch_user(800333171)
data = tools.remove_duplicate_character(data)
```

#### Merge Character Data
```py
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
```py
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))
```
27 changes: 27 additions & 0 deletions examples/basic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import asyncio

from mihomo import Language, MihomoAPI

client = MihomoAPI(language=Language.EN)


async def main():
data = await client.fetch_user(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)}")


asyncio.run(main())
25 changes: 25 additions & 0 deletions examples/data_persistence.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import asyncio
import pickle
import zlib

from mihomo import Language, MihomoAPI, StarrailInfoParsed


async def main():
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))


asyncio.run(main())
19 changes: 19 additions & 0 deletions examples/merge_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import asyncio

from mihomo import Language, MihomoAPI, tools


async def main():
client = MihomoAPI(language=Language.EN)
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)

print(data)


asyncio.run(main())
5 changes: 4 additions & 1 deletion mihomo/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

class Language(Enum):
CHT = "cht"
CHS = "chs"
DE = "de"
EN = "en"
ES = "es"
Expand Down Expand Up @@ -63,7 +64,9 @@ async def request(
"""
url = self.BASE_URL + "/" + str(uid)
params = {"lang": language.value}
params = {}
if language != Language.CHS:
params.update({"lang": language.value})
async with aiohttp.ClientSession() as session:
async with session.get(url, params=params) as response:
if response.status == 200:
Expand Down

0 comments on commit 8dcd3b6

Please sign in to comment.