A static library of Genshin item/char info. (WIP) - Albedo added.
Project description
GI Static Data Library • If contact is needed urgently, please send me a friend request in Discord, @sys_delta. I'm much more active on discord than gmail.
🚀 genshin-impact Data Library Integration Guide
The genshin-impact library provides immediate and safe access to static character and material data from its bundled JSON file. This guide covers installation, core retrieval, and essential Discord implementation using modern slash commands and autocompletion. The core package for all data functions is gisl_data_library.
- Installation and Safe Core Retrieval Begin by installing the library and setting up a safe import pattern to prevent your application from crashing if the dependency is missing.
💾 Installation
pip install genshin-impact
🐍 Safe Data Retrieval Pattern (Recommended)
import discord
from discord import app_commands
try:
# Import the main data lookup function
from gisl_data_library import get_character_data
except ImportError:
# Handle the missing dependency gracefully
print("❌ FATAL ERROR: gisl_data_library not installed or accessible.")
# In a Discord bot context, you would log this error or notify the user.
# Primary retrieval
character_data = get_character_data("albedo")
if not character_data:
# Handle Character Not Found (e.g., return None)
return
2. Discord Autocomplete for Slash Commands
For a seamless user experience, use the hidden function get_all_characters_data to provide real-time character name suggestions in your slash commands (app_commands). ⚙️ Autocomplete Logic
from discord import app_commands
async def character_autocomplete(interaction: discord.Interaction, current: str):
# CRITICAL: This imports the helper function
from gisl_data_library import get_all_characters_data
# 1. Get ALL character names (the keys are always lowercase)
all_names = get_all_characters_data().keys()
# 2. Filter the names based on user input
return [
# Set the displayed 'name' to Title Case and the internal 'value' to lowercase
app_commands.Choice(name=name.title(), value=name)
for name in all_names if current.lower() in name
][:25] # Discord limits suggestions to 25
# --- Command Implementation ---
@app_commands.command(name="character", description="Get detailed data for a character.")
@app_commands.describe(character_name="Start typing the character's name...")
@app_commands.autocomplete(character_name=character_autocomplete)
async def character_command(self, interaction: discord.Interaction, character_name: str):
# 'character_name' will be the lowercase 'value' from autocomplete, ready for lookup!
# data = get_character_data(character_name) ...
pass
3. Accessing Detailed Levels and Tiers
The dictionary returned by get_character_data(name) contains structured information. To display all levels (e.g., C1-C6, or all Ascension Levels), you must iterate through the respective lists or dictionaries.
| Requested Detail | Access Key | Data Structure | Display Logic |
|---|---|---|---|
| Talent Info / Levels | data['talents'] | list of dict | Iterate to display the name and description of each of the three main talents. |
| Constellation Info / Levels | data['constellations'] | list of dict | Iterate (indices 0-5) to display the name and description for each Constellation (C1 to C6). |
| Character Level | data['ascension_levels'] | dict (keys are level brackets) | Iterate over keys (.items()) to display all level milestones and their associated stat changes. |
-
🧩 Talent Material Retrieval: Handling Positional Data The amount string for talent materials is a compressed, positionally indexed list of quantities, where zeros (0) are used as crucial placeholders to maintain alignment across all level-up steps. A. Understanding the Positional Indexing The code parses the raw string (e.g., "0-0-0-0-0-4-6-9-12") into an amounts list. The index of an item in this list directly corresponds to a specific level-up step: | List Index (i) | Level-Up Step | Resulting Code Index | |---|---|---| | 0 | 1 \to 2 | materials_by_level[1] | | ... | ... | ... | | 5 | 6 \to 7 | materials_by_level[6] | | 8 | 9 \to 10 | materials_by_level[9] | B. The Logic for Dealing with Zero Placeholders The core implementation uses a conditional check (if amount > 0:) to ignore placeholders while respecting the positional alignment.
- Case 1: Standard Progression (Talent Books & Common Drops) For materials covering a wide range (often including placeholders, like T3 books), the standard index mapping works by using the check to skip initial zeros:
The if amount > 0: check skips the zero placeholders (e.g., the first five '0's)
i+1 correctly maps index 5 to level 6 (6->7 step).
if amount > 0: materials_by_level[i + 1].append(...)
* Case 2: Weekly Boss Drops (Hardcoded Exception)
Weekly Boss materials often omit the leading zero placeholders, resulting in a short list (e.g., only 4 items for levels 7 through 10). The code must identify this list size and apply a hardcoded offset.
Identify a short list (e.g., len 4) and apply a starting offset
elif len(amounts) == 4: start_level = 6 # Set the start of the level range # start_level + i maps index 0 to level 6 (6->7 step) materials_by_level[start_level + i].append(...)
- Update LOGS -
-Update 0.0.2-
- Removed the json load print.
- Added a guide for retrieving data.
-
-Update-
- Renamed the repo to genshin impact.
- Version reset to 0.0.1
-Update 0.1.0 to 0.1.5-
* Trying to fix the talent retrieve function.
* Added a print system temporarily to help me debug
-Update 0.0.9-
* Fixing the lib issues
-Update 0.0.8-
* Trying a new json retreval system using lib
-Update 0.0.7-
* Trying to fix the same error that I tried to fix on 0.0.6.
-Update 0.0.6-
* Fixed an issue with retrieving character list by mats/element/weapon.
-Update 0.0.3 to 0.0.5-
* Fixed a json error.
* Fixed multiple json errors. :<
* I FORGOT TO SAVE THE ERROR FIXES
-Update 0.0.2-
* Added Albedo
* Changed the gisl.py lookup system
*** Major disclaimer: I did use AI for this. I'm new, but I will slowly change the code using my knowledge as I continue adding more stuff to this library :3
A simple Python library for retrieving Genshin Impact character and material data from a JSON file.
Features Character Data: Access detailed information about characters including their stats, talents, and constellations.
Material Lookup: Find which characters use a specific ascension or talent material.
Data-driven: The library's data is stored in a JSON file (gisl_data.json), making it easy to update and extend.
Installation You can install this library directly from your local repository using pip.
pip install .
Usage Here is a quick example of how to use the library to access character data.
Example: Getting Albedo's Talents from gisl_data_library import get_character_data import json
albedo_talents = get_character_data("albedo", "talents") print(json.dumps(albedo_talents, indent=2))
This will output all the talent data for Albedo, which is useful for figuring out which materials you need for your character.
Example: Finding characters by material from gisl_data_library import find_characters_by_material import json
characters_with_cecilia = find_characters_by_material("Cecilia") print(json.dumps(characters_with_cecilia, indent=2))
License This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
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 genshin_impact-0.0.2.tar.gz.
File metadata
- Download URL: genshin_impact-0.0.2.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af4439823c84fff3211488a78a532fae79c25fcba50bcbc6dc55e009b1f91f19
|
|
| MD5 |
3f233ca0f14312926fabb1f3bc25a08f
|
|
| BLAKE2b-256 |
b62c8ee37ecd35e338535963982697a6c77e4ef9512c0547fa7ef27dd3f12a30
|
File details
Details for the file genshin_impact-0.0.2-py3-none-any.whl.
File metadata
- Download URL: genshin_impact-0.0.2-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6645f5b5bda8efc7ae2374c1cf5746d5eae974628b66a0c7f50c36cd135a311f
|
|
| MD5 |
c6555ae10aecb7a90e163e640014c032
|
|
| BLAKE2b-256 |
69df15ebf80c3fe601298ba6d16ac83277d824fcb38521cb8da9fbe790e59a9d
|