A Python library for fetching player data from the Enka Network API.
Project description
Endfield
A Python library for fetching and parsing player data from the Enka Network API for Endfield.
Overview
Endfield is an async Python library that provides easy access to player game data from the Enka Network API. It allows developers to retrieve comprehensive information about players, their characters, weapons, equipment, and computed statistics.
Features
- Async Support: Built with asyncio for efficient concurrent requests
- Complete Data Models: Pydantic-based models for type-safe data handling
- Player Showcase Data: Fetch player profiles and their character showcases
- Character Information: Get detailed character data including skills, talents, and stats
- Equipment & Weapons: Access equipment and weapon information
- Stat Computation: Calculate final character statistics with modifiers
- Asset Resolution: Built-in asset resolution with local JSON data
- Update Checking: Check for and download library updates
- Session Management: Flexible session handling with context managers
Installation
From PyPI
pip install endfield-py
From GitHub
pip install git+https://github.com/MR-LORD-REX/endfield.git
Manual Installation
git clone https://github.com/MR-LORD-REX/endfield.git
cd endfield
pip install -e .
Requirements
- Python 3.8+
- aiohttp >= 3.8.0
- pydantic >= 2.0.0
Quick Start
Basic Usage
import asyncio
from endfield import Endfield
async def main():
async with Endfield() as client:
# Fetch player showcase data
showcase = await client.get_showcase(uid=4225399080)
print(showcase)
asyncio.run(main())
Enable Debug Logging
async with Endfield(debug=True) as client:
showcase = await client.get_showcase(uid=4225399080)
API Reference
Endfield Client
Constructor
Endfield(
session: Optional[aiohttp.ClientSession] = None,
debug: bool = False
)
Parameters:
session: Optional external aiohttp sessiondebug: Enable debug logging (default: False)
Methods
get_showcase(uid: int | str)
Fetch complete player showcase data including all characters, equipment, and weapons.
showcase = await client.get_showcase(uid=4225399080)
Returns: ShowcaseData - Complete player showcase information with all characters
get_character_showcase(uid: int | str, index: int = 0)
Fetch detailed data for a specific character in the player's showcase.
char_data = await client.get_character_showcase(uid=4225399080, index=0)
Parameters:
uid: Player UIDindex: Character index (0-based, default: 0)
Returns: CharacterData - Detailed character data including skills, talents, and computed statistics
get_profile(uid: int | str)
Fetch player profile information only.
profile = await client.get_profile(uid=4225399080)
Returns: PlayerProfile - Player account and character list information
check_for_updates()
Check for library updates.
await client.check_for_updates()
close()
Close the client session.
await client.close()
Data Models
The library provides comprehensive Pydantic models for type-safe data handling:
- ShowcaseData: Complete player showcase information
- PlayerProfile: Player account information
- ProfileCharacter: Character showcase data
- CharacterData: Detailed character information including skills and talents
- WeaponData: Weapon information and skills
- EquipData: Equipment data with stat modifiers
- ComputedStats: Final calculated character statistics
Examples
Fetch Player Profile
async with Endfield() as client:
showcase = await client.get_showcase(uid="your_uid_here")
profile = showcase.player_info
print(f"Player: {profile.player_name}")
print(f"Level: {profile.level}")
Get Character Information
async with Endfield() as client:
showcase = await client.get_showcase(uid="your_uid_here")
for char in showcase.characters:
print(f"Character: {char.name}")
print(f"Level: {char.level}")
print(f"Stats: {char.stats}")
Check Weapon Information
async with Endfield() as client:
showcase = await client.get_showcase(uid="your_uid_here")
for char in showcase.characters:
if char.weapon:
print(f"{char.name}'s Weapon: {char.weapon.name}")
print(f"Level: {char.weapon.level}")
Error Handling
The library provides specific exceptions for error handling:
from endfield.errors import APIError, CharacterNotFoundError, WeaponNotFoundError
try:
async with Endfield() as client:
showcase = await client.get_showcase(uid="invalid_uid")
except APIError as e:
print(f"API Error: {e}")
except CharacterNotFoundError as e:
print(f"Character not found: {e}")
except WeaponNotFoundError as e:
print(f"Weapon not found: {e}")
Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues on the GitHub repository.
Development Setup
git clone https://github.com/MR-LORD-REX/endfield.git
cd endfield
pip install -e .
License
This project is licensed under the MIT License - see the LICENSE.txt file for details.
Disclaimer
This is an unofficial library. Endfield is a trademark of their respective owners. This library is not affiliated with or endorsed by the game developers. Use this library responsibly and in accordance with the Enka Network API terms of service.
Support
For issues, questions, or suggestions, please open an issue on the GitHub repository.
Credits
- Built by MR-LORD-REX , telegram
- Data source: Enka Network
Changelog
Version 1.0.7
- Added medals data to player profile
- Updated data models to include medals
- Improved error handling for character processing
- fixed session management
NOTE
- Computation of final character stats are done by the currently known formulas, some of them might be inaccurate , feel free to contribute if you encounter any discrepancies or have suggestions for improvement.
Happy Endfielding
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file endfield_py-1.0.7.tar.gz.
File metadata
- Download URL: endfield_py-1.0.7.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4168cb14a33315fa13900b0807ea6916dc5c74b3b6c557d3083cbefb0cf5aee8
|
|
| MD5 |
32a2432ed9904d0ae13efa6a8929464b
|
|
| BLAKE2b-256 |
f2003a9b6d46e32bf2884bb7888e99cad3663b35e54ddb51951f927c35508323
|
File details
Details for the file endfield_py-1.0.7-py3-none-any.whl.
File metadata
- Download URL: endfield_py-1.0.7-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6995e39a770266aeaa34a11ba2b9315cd37a6475af8f76a45ac699a9f455c367
|
|
| MD5 |
63f952c4527122447833f4a9f234085f
|
|
| BLAKE2b-256 |
8edb55bc99d065a71d9f7f0105c909571fd30836fb5245a6204c2a907f186194
|