Go to file
2023-08-17 11:32:38 +09:00
.github/workflows Remove lint 2022-08-14 16:45:06 +07:00
enkanetwork fix indentation 2023-08-17 11:32:38 +09:00
example feat: Add new exception and little bi format code 2023-08-15 00:52:08 +07:00
.gitignore Update assets 3.6 -> 3.8 2023-08-15 00:28:45 +07:00
LICENSE Init project 2022-06-22 13:14:31 +07:00
MANIFEST.in Change "json" to "assets" 2022-07-17 13:05:20 +07:00
README_JA.md fix lang code (jp -> ja) 2023-07-13 09:12:53 +09:00
README_TH.md fix lang code (jp -> ja) 2023-07-13 09:12:53 +09:00
README.md fix lang code (jp -> ja) 2023-07-13 09:12:53 +09:00
requirements.txt fix: Downgrade pydanic 2023-08-15 00:30:16 +07:00
setup.py Add cachetool into setup.py 2022-12-20 17:50:10 +07:00
test.json Add test checker 2022-08-02 12:29:06 +07:00
test.py Add new test case and update case 2022-08-14 16:45:44 +07:00

Enka Network Python

EN | TH | JA

Library for API wrapper data from site https://enka.network/

🏓 Table of content

Installation

pip install enkanetwork.py

Usage

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.avatar.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

=== 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 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
update_assets() Update new assets from repo Enkanetwork.py Data

Return data

UID

Return type: EnkaNetworkResponse

Wrapper API Notes
player playerInfo Please refer Player
characters avatarInfoList Please refer Characters
profile - Please refer Profile Info
owner owner Please refer Player Owner
ttl ttl
uid uid

Profile

Return type: EnkaNetworkProfileResponse

Wrapper API Notes
username playerInfo Please refer Player
profile profile Please refer in Profile patreon
hoyos hoyos Please refer Profile hoyos

Structure

Player owner

Wrapper API Notes
hash hash
username username Please refer Tier
profile profile Please refer in Profile patreon
builds - Please refer Build(s) info

Profile Patreon

Wrapper API Notes
bio bio
level level Please refer 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
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
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
signature signature
world_level worldLevel
achievement finishAchievementNum
namecard namecardId
namecards showNameCardIdList -> id Please refer Namecard
abyss_floor towerFloorIndex
abyss_room towerLevelIndex
characters_preview showAvatarInfoList Please refer Character Preview
avatar profilePicture Please refer Avatar Icon

Avatar icon

Wrapper API Notes
id avatarId
icon Please refer Icon Data

Namecard

Wrapper API Notes
id - Namecard ID
name - Namecard name
icon - Namecard icon, Please refer Icon Data
banner - Namecard banner, Please refer Icon Data
navbar - Namecard navbar (Alpha), Please refer Icon Data

Character preview

Wrapper API Notes
id - Avatar ID
name - Avatar Name
level - Avatar Level
icon - Avatar Icon, Please refer Icon Data

Characters

Wrapper API Notes
id avatarId
name - Avatar Name
element - Please refer Element Type
rarity - Rarity
image - Please refer 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
stats fightPropMap Please refer FIGHT_PROP Data
constellations talentIdList Please refer Constellation
constellations_unlocked - Constellation unlocked
skill_data inherentProudSkillList
skill_id skillDepotId
skills - Please refer Skill

Icon

Wrapper API Notes
icon - Avatar icon, Please refer Icon Data
side - Avatar side icon, Please refer Icon Data
banner - Avatar wish banner, Please refer 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

Wrapper API Notes
name - Equipment Name (Artifact name or Weapon name)
icon icon Please refer Icon Data
artifact_type - Please refer Artifact Type
rarity rankLevel
mainstats reliquaryMainstat, weaponStats -> 0 Please refer Equipments Stats
substats reliquarySubstats, weaponStats -> 1 Please refer 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
Get build info by avatar id builds.get_character(10000021, 11111111) Build 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.

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:

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

Support & Question

If you need support or some question about EnkaNetwokt.py. You can feel free contact to me in Enka.network discord server in 𝖯𝖸┃enkanetworkpy channel and mention (Ping) to @M-307 for support and help

LICENSE

MIT License

Keqing

Picture by KKOMDASTRO