# Enka.py
[![Downloads](https://static.pepy.tech/badge/enka-py)](https://pepy.tech/project/enka-py) [![Downloads](https://static.pepy.tech/badge/enka-py/month)](https://pepy.tech/project/enka-py) ![](https://img.shields.io/pypi/v/enka.py)
Friendly API for fetching genshin user data from https://enka.shinshin.moe/ (Now https://enka.network)
Added name parsing and full artifact support and more elegant code.
original from https://github.com/mrwan200/EnkaNetwork.py, but better!
# Documentation
see http://enkapy.rtfd.io/
# Installation
```
pip install enka.py
```
# Usage
```py
import asyncio
from enkapy import Enka
client = Enka()
async def main():
await client.load_lang()
user = await client.fetch_user(104267816)
print(f"Nickname: {user.player.nickname}")
print(f"Level: {user.player.level}")
print(f'Signature: {user.player.signature}')
print(f'World level:{user.player.worldLevel}')
print(f'Abyss: {user.player.towerFloorIndex}-{user.player.towerLevelIndex}')
# fetch first character
character = user.characters[0]
print(f'Name: {character.name}')
print(f'Ascension: {character.ascension}')
print(f'Level: {character.level}')
print(f'Exp: {character.experience}')
print('Weapon:')
weapon = character.weapon
print(f'\tName: {weapon.name}')
print(f'\tLevel: {weapon.level}')
print(f'\tRefine: {weapon.refine}')
print(f'\tStar level: {weapon.rank}')
print('Constellations:')
for constellation in character.constellations:
if constellation.activated:
print(f'\t{constellation.name} Activated')
print('Skills:')
for skill in character.skills:
if skill.type == 0:
print(f'\tNormal skill {skill.name}, level:{skill.level}')
elif skill.type == 1:
print(f'\tElemental skill {skill.name}, level:{skill.level}')
elif skill.type == 2:
print(f'\tElemental burst {skill.name}, level:{skill.level}')
print('Artifacts:')
for artifact in character.artifacts:
print(f'\t{artifact.set_name} {artifact.name}:')
print(f'\t{artifact.main_stat.prop}:{artifact.main_stat.value}')
for sub_stats in artifact.sub_stats:
print(f'\t\t{sub_stats.prop}:{sub_stats.value}')
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```
Result:
```sh
Nickname: 天天向上
Level: 60
Signature: 凌人有点无脑
World level:8
Abyss: 12-3
Name: Kamisato Ayaka
Ascension: 6
Level: 90
Exp: 0
Weapon:
Name: Mistsplitter Reforged
Level: 90
Refine: 5
Star level: 5
Constellations:
Snowswept Sakura Activated
Blizzard Blade Seki no To Activated
Frostbloom Kamifubuki Activated
Ebb and Flow Activated
Blossom Cloud Irutsuki Activated
Dance of Suigetsu Activated
Skills:
Elemental burst Kamisato Art: Soumetsu, level:10
Normal skill Normal Attack: Kamisato Art - Kabuki, level:10
Elemental skill Kamisato Art: Hyouka, level:9
Normal skill Kamisato Art: Senho, level:1
Artifacts:
Blizzard Strayer Snowswept Memory:
FIGHT_PROP_HP:4780.0
FIGHT_PROP_ELEMENT_MASTERY:44.0
FIGHT_PROP_CRITICAL_HURT:38.1
FIGHT_PROP_DEFENSE:16.0
FIGHT_PROP_CRITICAL:3.9
Blizzard Strayer Icebreaker's Resolve:
FIGHT_PROP_ATTACK:311.0
FIGHT_PROP_CRITICAL:3.1
FIGHT_PROP_ELEMENT_MASTERY:35.0
FIGHT_PROP_CHARGE_EFFICIENCY:10.4
FIGHT_PROP_CRITICAL_HURT:21.8
Blizzard Strayer Frozen Homeland's Demise:
FIGHT_PROP_ATTACK_PERCENT:46.6
FIGHT_PROP_HP_PERCENT:8.7
FIGHT_PROP_ATTACK:18.0
FIGHT_PROP_CRITICAL_HURT:13.2
FIGHT_PROP_CRITICAL:10.5
Archaic Petra Goblet of Chiseled Crag:
FIGHT_PROP_ICE_ADD_HURT:46.6
FIGHT_PROP_ELEMENT_MASTERY:16.0
FIGHT_PROP_CRITICAL_HURT:25.7
FIGHT_PROP_HP_PERCENT:10.5
FIGHT_PROP_CRITICAL:5.4
Blizzard Strayer Broken Rime's Echo:
FIGHT_PROP_CRITICAL_HURT:62.2
FIGHT_PROP_CRITICAL:11.7
FIGHT_PROP_ATTACK_PERCENT:9.3
FIGHT_PROP_ELEMENT_MASTERY:42.0
FIGHT_PROP_DEFENSE:35.0
```
If you want full docs for the API, visit [EnkaNetwork API](https://github.com/EnkaNetwork/API-docs)
# LICENSE
[MIT License](./LICENSE)
Raw data
{
"_id": null,
"home_page": "https://github.com/pwnless/enka.py",
"name": "enka.py",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "enkapy.py, enkapy, enka.network, genshinapi",
"author": "pwnless",
"author_email": "mystream@riseup.net",
"download_url": "https://files.pythonhosted.org/packages/3e/e1/77ebb0cb090d9f726c6ca9f381f5a4e190173599dcbfe7e6d84a1245f8cd/enka.py-1.2.2.tar.gz",
"platform": null,
"description": "# Enka.py\r\n[![Downloads](https://static.pepy.tech/badge/enka-py)](https://pepy.tech/project/enka-py) [![Downloads](https://static.pepy.tech/badge/enka-py/month)](https://pepy.tech/project/enka-py) ![](https://img.shields.io/pypi/v/enka.py)\r\n\r\nFriendly API for fetching genshin user data from https://enka.shinshin.moe/ (Now https://enka.network)\r\n\r\nAdded name parsing and full artifact support and more elegant code.\r\n\r\noriginal from https://github.com/mrwan200/EnkaNetwork.py, but better!\r\n\r\n# Documentation\r\n\r\nsee http://enkapy.rtfd.io/\r\n\r\n# Installation\r\n```\r\npip install enka.py\r\n```\r\n\r\n# Usage\r\n```py\r\nimport asyncio\r\n\r\nfrom enkapy import Enka\r\n\r\nclient = Enka()\r\n\r\n\r\nasync def main():\r\n await client.load_lang()\r\n user = await client.fetch_user(104267816)\r\n print(f\"Nickname: {user.player.nickname}\")\r\n print(f\"Level: {user.player.level}\")\r\n print(f'Signature: {user.player.signature}')\r\n print(f'World level:{user.player.worldLevel}')\r\n print(f'Abyss: {user.player.towerFloorIndex}-{user.player.towerLevelIndex}')\r\n # fetch first character\r\n character = user.characters[0]\r\n print(f'Name: {character.name}')\r\n print(f'Ascension: {character.ascension}')\r\n print(f'Level: {character.level}')\r\n print(f'Exp: {character.experience}')\r\n print('Weapon:')\r\n weapon = character.weapon\r\n print(f'\\tName: {weapon.name}')\r\n print(f'\\tLevel: {weapon.level}')\r\n print(f'\\tRefine: {weapon.refine}')\r\n print(f'\\tStar level: {weapon.rank}')\r\n\r\n print('Constellations:')\r\n for constellation in character.constellations:\r\n if constellation.activated:\r\n print(f'\\t{constellation.name} Activated')\r\n print('Skills:')\r\n for skill in character.skills:\r\n if skill.type == 0:\r\n print(f'\\tNormal skill {skill.name}, level:{skill.level}')\r\n elif skill.type == 1:\r\n print(f'\\tElemental skill {skill.name}, level:{skill.level}')\r\n elif skill.type == 2:\r\n print(f'\\tElemental burst {skill.name}, level:{skill.level}')\r\n print('Artifacts:')\r\n for artifact in character.artifacts:\r\n print(f'\\t{artifact.set_name} {artifact.name}:')\r\n print(f'\\t{artifact.main_stat.prop}:{artifact.main_stat.value}')\r\n for sub_stats in artifact.sub_stats:\r\n print(f'\\t\\t{sub_stats.prop}:{sub_stats.value}')\r\n\r\n\r\nloop = asyncio.get_event_loop()\r\nloop.run_until_complete(main())\r\n```\r\nResult:\r\n```sh\r\nNickname: \u5929\u5929\u5411\u4e0a\r\nLevel: 60\r\nSignature: \u51cc\u4eba\u6709\u70b9\u65e0\u8111\r\nWorld level:8\r\nAbyss: 12-3\r\nName: Kamisato Ayaka\r\nAscension: 6\r\nLevel: 90\r\nExp: 0\r\nWeapon:\r\n Name: Mistsplitter Reforged\r\n Level: 90\r\n Refine: 5\r\n Star level: 5\r\nConstellations:\r\n Snowswept Sakura Activated\r\n Blizzard Blade Seki no To Activated\r\n Frostbloom Kamifubuki Activated\r\n Ebb and Flow Activated\r\n Blossom Cloud Irutsuki Activated\r\n Dance of Suigetsu Activated\r\nSkills:\r\n Elemental burst Kamisato Art: Soumetsu, level:10\r\n Normal skill Normal Attack: Kamisato Art - Kabuki, level:10\r\n Elemental skill Kamisato Art: Hyouka, level:9\r\n Normal skill Kamisato Art: Senho, level:1\r\nArtifacts:\r\n Blizzard Strayer Snowswept Memory:\r\n FIGHT_PROP_HP:4780.0\r\n FIGHT_PROP_ELEMENT_MASTERY:44.0\r\n FIGHT_PROP_CRITICAL_HURT:38.1\r\n FIGHT_PROP_DEFENSE:16.0\r\n FIGHT_PROP_CRITICAL:3.9\r\n Blizzard Strayer Icebreaker's Resolve:\r\n FIGHT_PROP_ATTACK:311.0\r\n FIGHT_PROP_CRITICAL:3.1\r\n FIGHT_PROP_ELEMENT_MASTERY:35.0\r\n FIGHT_PROP_CHARGE_EFFICIENCY:10.4\r\n FIGHT_PROP_CRITICAL_HURT:21.8\r\n Blizzard Strayer Frozen Homeland's Demise:\r\n FIGHT_PROP_ATTACK_PERCENT:46.6\r\n FIGHT_PROP_HP_PERCENT:8.7\r\n FIGHT_PROP_ATTACK:18.0\r\n FIGHT_PROP_CRITICAL_HURT:13.2\r\n FIGHT_PROP_CRITICAL:10.5\r\n Archaic Petra Goblet of Chiseled Crag:\r\n FIGHT_PROP_ICE_ADD_HURT:46.6\r\n FIGHT_PROP_ELEMENT_MASTERY:16.0\r\n FIGHT_PROP_CRITICAL_HURT:25.7\r\n FIGHT_PROP_HP_PERCENT:10.5\r\n FIGHT_PROP_CRITICAL:5.4\r\n Blizzard Strayer Broken Rime's Echo:\r\n FIGHT_PROP_CRITICAL_HURT:62.2\r\n FIGHT_PROP_CRITICAL:11.7\r\n FIGHT_PROP_ATTACK_PERCENT:9.3\r\n FIGHT_PROP_ELEMENT_MASTERY:42.0\r\n FIGHT_PROP_DEFENSE:35.0\r\n```\r\n\r\nIf you want full docs for the API, visit [EnkaNetwork API](https://github.com/EnkaNetwork/API-docs)\r\n\r\n# LICENSE\r\n[MIT License](./LICENSE)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Library for fetching JSON data from site https://enka.network/",
"version": "1.2.2",
"project_urls": {
"Homepage": "https://github.com/pwnless/enka.py"
},
"split_keywords": [
"enkapy.py",
" enkapy",
" enka.network",
" genshinapi"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3ee177ebb0cb090d9f726c6ca9f381f5a4e190173599dcbfe7e6d84a1245f8cd",
"md5": "a53c70d2d723545052824c956c7dc97f",
"sha256": "37a20f5d83c4208ad14c7e2dc8a7841a38fc4c9558bd0d81978a368f5dd2c763"
},
"downloads": -1,
"filename": "enka.py-1.2.2.tar.gz",
"has_sig": false,
"md5_digest": "a53c70d2d723545052824c956c7dc97f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 11534,
"upload_time": "2024-04-28T12:46:26",
"upload_time_iso_8601": "2024-04-28T12:46:26.884178Z",
"url": "https://files.pythonhosted.org/packages/3e/e1/77ebb0cb090d9f726c6ca9f381f5a4e190173599dcbfe7e6d84a1245f8cd/enka.py-1.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-28 12:46:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pwnless",
"github_project": "enka.py",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "enka.py"
}