# Enka Network Python EN | [TH](https://github.com/mrwan200/EnkaNetwork.py/blob/master/README_TH.md) Library for API wrapper data from site https://enka.network/ # 🏓 Table of content - [💾 Installation](#installation) - [✨ Usage](#usage) - [👀 Example](#example) - [📗 Class Methods](#class-methods) - [📥 Response data](#return-data) - [UID](#uid) - [Profile](#profile) - [🚧 Structure](#structure) - [Player owner](#player-owner) - [Profile patreon](#profile-patreon) - [Profile Hoyos](#profile-hoyos) - [Build(s) info](#avatar-builds-info) - [Profile info](#profile-info) - [Player](#player) - [Namecard](#namecard) - [Avatar Icon](#avatar-icon) - [Character preview](#character-preview) - [Characters](#characters) - [Icon](#icon) - [Constellation](#constellation) - [Skill](#skill) - [Equipments (Artifact, Weapon)](#equipments-artifact-weapon) - [Equipments Info](#equipments-info) - [Equipments Stats](#equipments-stats) - [FIGHT_PROP Data](#fight_prop-data) - [Build(s)](#build) - [🔧 Assets](#assets) - [Character, constellations, skills, namecards](#assets-character-constellations-skills-namecards) - [NameTextMapHash](#assets-nametextmaphash) - [🌎 Languages Supported](#languages-supported) - [🙋 Support & Question](#support--question) - [📄 LICENSE](#license) # Installation ``` pip install enkanetwork.py ``` # Usage ```py import asyncio from enkanetwork import EnkaNetworkAPI client = EnkaNetworkAPI() async def main(): async with client: data = await client.fetch_user(843715177) print("=== Player Info ===") print(f"Nickname: {data.player.nickname}") print(f"Level: {data.player.level}") print(f"Icon: {data.player.icon.url}") print(f"Signature: {data.player.signature}") print(f"Achievement: {data.player.achievement}") print(f"Abyss floor: {data.player.abyss_floor} - {data.player.abyss_room}") print(f"Cache timeout: {data.ttl}") asyncio.run(main()) ``` ## Preview ```sh === Player Info === Nickname: mrwan2546 Level: 55 Icon: https://enka.network/ui/UI_AvatarIcon_Kazuha.png Signature: K A Z U H A M U C H <3 Achievement: 396 Abyss floor: 8 - 3 Cache timeout: 300 ``` ## Example Please refer in [example](./example/) folder. # Class Methods | Name | Description | | ----------------------------------- | --------------------------------------------------------------------------------------------------- | | fetch_user(uid) | Fetch user data (UID) **(Will be depercated soon)** | | fetch_user_by_uid(uid) | Fetch user data (UID) | | fetch_user_by_username(profile_id) | Fetch user data (Profile ID) **(For subscriptions in Enka.Network)** | | fetch_hoyos_by_username(profile_id) | Fetch user hoyo(s) data (Profile ID) **(For subscriptions in Enka.Network)** | | fetch_builds(profile_id, metaname) | Fetch build data (Profile ID) **(For subscriptions in Enka.Network)** | | set_language(lang) | Set new language
Please refer [Languages Supported](#languages-supported) | | update_assets() | Update new assets from repo [Enkanetwork.py Data](https://github.com/mrwan200/enkanetwork.py-data/) | # Return data ## UID Return type: `EnkaNetworkResponse` | Wrapper | API | Notes | | ---------- | -------------- | ------------------------------------------ | | player | playerInfo | Please refer [Player](#player) | | characters | avatarInfoList | Please refer [Characters](#characters) | | profile | - | Please refer [Profile Info](#profile-info) | | owner | owner | Please refer [Player Owner](#player-owner) | | ttl | ttl | | | uid | uid | | ## Profile Return type: `EnkaNetworkProfileResponse` | Wrapper | API | Notes | | -------- | ---------- | --------------------------------------------------- | | username | playerInfo | Please refer [Player](#player) | | profile | profile | Please refer in [Profile patreon](#profile-patreon) | | hoyos | hoyos | Please refer [Profile hoyos](#profile-hoyos) | # Structure ## Player owner | Wrapper | API | Notes | | -------- | -------- | --------------------------------------------------- | | hash | hash | | | username | username | Please refer [Tier](#tier) | | profile | profile | Please refer in [Profile patreon](#profile-patreon) | | builds | - | Please refer [Build(s) info](#avatar-builds-info) | ## Profile Patreon | Wrapper | API | Notes | | ------------ | ------------ | -------------------------- | | bio | bio | | | level | level | Please refer [Tier](#tier) | | profile | worldLevel | | | signup_state | signup_state | | | image_url | image_url | | ## Profile Hoyos | Wrapper | API | Notes | | ------------ | ------------ | ------------------------------------------------ | | uid_public | uid_public | | | public | public | | | verified | verified | | | player_info | player_info | Please refer [Profile Patreon](#profile-patreon) | | signup_state | signup_state | | | signup_state | signup_state | | ## Avatar build(s) info | Wrapper | API | Notes | | ----------- | ----------- | -------------------------------------- | | id | id | | | name | name | | | avatar_id | avatar_id | | | avatar_data | avatar_data | Please refer [Characters](#characters) | | order | order | | | live | live | | | settings | settings | | | public | public | | ## Profile Info | Wrapper | API | Notes | | ------- | --- | ------------------------------ | | uid | - | UID in-game | | url | - | URL to enter Enka.Network site | | path | - | Path URL | ## Player | Wrapper | API | Notes | | ------------------ | ------------------------ | ---------------------------------------------------- | | nickname | nickname | Please refer [Namecard](#namecard) | | signature | signature | | | world_level | worldLevel | | | achievement | finishAchievementNum | | | namecard | namecardId | | | namecards | showNameCardIdList -> id | Please refer [Namecard](#namecard) | | abyss_floor | towerFloorIndex | | | abyss_room | towerLevelIndex | | | characters_preview | showAvatarInfoList | Please refer [Character Preview](#character-preview) | | avatar | profilePicture | Please refer [Avatar Icon](#avatar-icon) | ### Avatar icon | Wrapper | API | Notes | | ------- | -------- | ------------------------------------ | | id | avatarId | | | icon | | Please refer [Icon Data](#icon-data) | ### Namecard | Wrapper | API | Notes | | ------- | --- | ------------------------------------------------------------- | | id | - | Namecard ID | | name | - | Namecard name | | icon | - | Namecard icon, Please refer [Icon Data](#icon-data) | | banner | - | Namecard banner, Please refer [Icon Data](#icon-data) | | navbar | - | Namecard navbar (Alpha), Please refer [Icon Data](#icon-data) | ### Character preview | Wrapper | API | Notes | | ------- | --- | ------------------------------------------------- | | id | - | Avatar ID | | name | - | Avatar Name | | level | - | Avatar Level | | icon | - | Avatar Icon, Please refer [Icon Data](#icon-data) | ## Characters | Wrapper | API | Notes | | ----------------------- | ---------------------- | ------------------------------------------------------ | | id | avatarId | | | name | - | Avatar Name | | element | - | Please refer [Element Type](#element-type) | | rarity | - | Rarity | | image | - | Please refer [Icon](#icon) | | xp | propMap -> 1001 | | | ascension | propMap -> 1002 | | | level | propMap -> 4001 | | | max_level | - | Avatar max level (Like 50/60) | | friendship_level | fetterInfo.level | | | equipments | equipList | Please refer [Equipments](#equipments-artifact-weapon) | | stats | fightPropMap | Please refer [FIGHT_PROP Data](#fight_prop-data) | | constellations | talentIdList | Please refer [Constellation](#constellation) | | constellations_unlocked | - | Constellation unlocked | | skill_data | inherentProudSkillList | | | skill_id | skillDepotId | | | skills | - | Please refer [Skill](#skill) | ### Icon | Wrapper | API | Notes | | ------- | --- | -------------------------------------------------------- | | icon | - | Avatar icon, Please refer [Icon Data](#icon-data) | | side | - | Avatar side icon, Please refer [Icon Data](#icon-data) | | banner | - | Avatar wish banner, Please refer [Icon Data](#icon-data) | ### Constellation | Wrapper | API | Notes | | -------- | --- | -------------------------- | | id | - | Constellation ID | | name | - | Constellation Name | | icon | - | Constellation Icon (URL) | | unlocked | - | Constellation has unlocked | ### Skill | Wrapper | API | Notes | | ---------- | --- | ----------------------- | | id | - | Skill ID | | name | - | Skill Name | | icon | - | Skill Icon (URL) | | level | - | Skill Level | | is_boosted | - | Skill level has boosted | ## Equipments (Artifact, Weapon) | Wrapper | API | Notes | | ---------- | ----------------------------------- | ------------------------------------------------ | | id | itemId | | | level | reliquary -> level, weapon -> level | | type | - | Type of equipment (Artifact or Weapon) | | refinement | weapon -> affixMap | | | ascension | weapon -> promoteLevel | | | detail | flat | Please refer [Equipments Info](#equipments-info) | ### Equipments Info | Wrapper | API | Notes | | ------------- | ----------------------------------- | -------------------------------------------------- | | name | - | Equipment Name (Artifact name or Weapon name) | | icon | icon | Please refer [Icon Data](#icon-data) | | artifact_type | - | Please refer [Artifact Type](#artifact-type) | | rarity | rankLevel | | | mainstats | reliquaryMainstat, weaponStats -> 0 | Please refer [Equipments Stats](#equipments-stats) | | substats | reliquarySubstats, weaponStats -> 1 | Please refer [Equipments Stats](#equipments-stats) | ### Equipments Stats | Wrapper | API | Notes | | ------- | ------- | ------------------------------ | | prop_id | prop_id | | | type | - | Value type (NUMBER or PERCENT) | | name | - | Name of FIGHT_PROP | | value | value | | ## FIGHT_PROP Data In FIGHT_PROP data. You can get the value from 4 methods. | Choice | Example | Output | |------------------|---------------------------|----------------------------| | Get raw value | stats.FIGHT_PROP_HP.value | 15552.306640625 | | Get rounded value| stats.FIGHT_PROP_ATTACK.to_rounded() | 344 | | Get percentage | stats.FIGHT_PROP_FIRE_ADD_HURT.to_percentage() | 61.5 | | Get percentage and symbol | stats.FIGHT_PROP_FIRE_ADD_HURT.to_percentage_symbol() | 61.5% | ## Build In this `Builds` It's not pretty data. You can use this method to get data. Or if you want get full, You can use `raw` argument | Choice | Example | Output | |------------------|---------------------------|----------------------------| | Get avatar ID list | builds.get_avatar_list() | [10000021,10000037,10000025, ...] | | Get character build | builds.get_character(10000021) | List of [Build info](#avatar-builds-info) | | Get build info by avatar id | builds.get_character(10000021, 11111111) | [Build info](#avatar-builds-info) | # Icon Data In icon data. You can get the value from 2 methods. | Choice | Example | Output | |------------------|---------------------------|--------------------------------| | Get filename | icon.filename | UI_AvatarIcon_Kazuha_Card.png | | Get URL | icon.url | https://enka.network/ui/UI_AvatarIcon_Kazuha_Card.png | ## Artifact Type | Key | Value | | ------- | -------------- | | Flower | EQUIP_BRACER | | Feather | EQUIP_NECKLACE | | Sands | EQUIP_SHOES | | Goblet | EQUIP_RING | | Circlet | EQUIP_DRESS | ## Element Type | Key | Value | | ------- | -------- | | Cryo | Ice | | Hydro | Water | | Anemo | Wind | | Pyro | Fire | | Geo | Rock | | Electro | Electric | # Assets ## Assets character, constellations, skills, namecards You can use avatarId to get the character, constellations, skills, namecards from assets. ```py import asyncio from enkanetwork import Assets assets = Assets() async def main(): # Character assets.character(10000046) # Constellations assets.constellations(2081199193) # Skills assets.constellations(10462) # Namecards assets.namecards(210059) loop = asyncio.get_event_loop() loop.run_until_complete(main()) ``` ## Assets NameTextMapHash The `NameTextMapHash` is a hash map that contains the name text of the assets. You can get `NameTextMapHash` from `hash_id` like this: ```py import asyncio from enkanetwork import Assets assets = Assets(lang="en") # Set languege before get name (Ex. English) async def main(): print(assets.get_hash_map(1940919994)) # Hu tao # OR you can get FIGHT_PROP name print(assets.get_hash_map("FIGHT_PROP_BASE_ATTACK")) # Base ATK loop = asyncio.get_event_loop() loop.run_until_complete(main()) ``` ## Languages Supported | Languege | Code | | ---------- | ---- | | English | en | | русский | ru | | Tiếng Việt | vi | | ไทย | th | | português | pt | | 한국어 | kr | | 日本語 | jp | | 中文 | zh | | Indonesian | id | | français | fr | | español | es | | deutsch | de | | Taiwan | cht | | Chinese | chs | If you want full docs for the API, visit [EnkaNetwork API Docs](https://github.com/EnkaNetwork/API-docs) ## Support & Question If you need support or some question about EnkaNetwokt.py. You can feel free contact to me in [Enka.network discord server](https://discord.gg/G3m7CWkssY) in [𝖯𝖸┃enkanetwork․py](https://discord.com/channels/840335525621268520/1046281445049647104) channel and mention (Ping) to **@M-307** for support and help # LICENSE [MIT License](./LICENSE) ![Keqing](https://c.tenor.com/MnkpnVCLcb0AAAAC/keqing-dance.gif) [Picture by KKOMDASTRO](https://twitter.com/KKOMDASTRO)