lunassets
v1.0.2
Published
Luna's asset finder wrapper library for Enka Network API - Easy access to Genshin Impact player assets and data
Maintainers
Readme
Lunassets
Luna's TypeScript library wrapper for asset management from Enka Network API.
Installation
npm install lunassetsQuick Start
import { EnkaAssetWrapper } from "lunassets";
async function getPlayerData() {
const enka = new EnkaAssetWrapper();
try {
const assets = await enka.getPlayerAssets("856012067");
console.log(assets);
} catch (error) {
console.error("Error:", error.message);
}
}
getPlayerData();Example Response
{
"playerInfo": {
"nickname": "Kiznavierr",
"level": 60,
"signature": "sometimes even reality is a lie",
"worldLevel": 9,
"finishAchievementNum": 1366,
"towerFloorIndex": 12,
"towerLevelIndex": 3,
"theaterActIndex": 10,
"theaterModeIndex": 83,
"theaterStarIndex": 10,
"isShowAvatarTalent": true,
"fetterCount": 33,
"towerStarIndex": 35,
"stygianIndex": 3,
"stygianSeconds": 79,
"stygianId": 5269006
},
"profilePicture": {
"id": 7300,
"iconName": "/ui/UI_AvatarIcon_Charlotte_Circle.png",
"url": "https://enka.network/ui/UI_AvatarIcon_Charlotte_Circle.png"
},
"nameCard": {
"id": 210214,
"iconName": "UI_NameCardPic_RoleCombat2_P",
"url": "https://enka.network/ui/UI_NameCardPic_RoleCombat2_P.png"
},
"showAvatars": [
{
"avatarId": 10000047,
"iconName": "UI_AvatarIcon_Kazuha",
"url": "https://enka.network/ui/UI_AvatarIcon_Kazuha.png",
"quality": 5,
"level": 90,
"talentLevel": 2,
"element": "Wind",
"weaponType": "WEAPON_SWORD_ONE_HAND"
}
],
"ttl": 60,
"lastUpdated": "2026-02-15T04:51:05.385Z"
}API Methods
getPlayerAssets(uid)
const assets = await enka.getPlayerAssets("123456789");getPlayerAssetsUncached(uid)
const assets = await enka.getPlayerAssetsUncached("123456789");buildAssetUrl(iconName, options)
const url = enka.buildAssetUrl("UI_AvatarIcon_Ayaka");Cache Management
// Check if player data is cached
const isCached = enka.isPlayerCached("123456789");
// Clear specific player cache
enka.clearPlayerCache("123456789");
// Clear all cache
enka.clearAllCache();Data Validation
// Check if character exists in reference data
const hasCharacter = await enka.hasCharacter(10000002);
// Check if profile picture exists
const hasPfp = await enka.hasProfilePicture(7300);
// Check if name card exists
const hasNameCard = await enka.hasNameCard(210214);Error Handling
import { EnkaApiError, EnkaMappingError } from "lunassets";
try {
const assets = await enka.getPlayerAssets("123456");
} catch (error) {
if (error instanceof EnkaApiError) {
console.error("API Error:", error.message);
} else if (error instanceof EnkaMappingError) {
console.error("Mapping Error:", error.message);
}
}License
See the LICENSE file for details.
