Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuko1101/enka-network-api
A Node.js Enka.Network API wrapper for Genshin Impact.
https://github.com/yuko1101/enka-network-api
enka enka-network enkanetwork genshin genshin-api genshin-artifacts genshin-impact node nodejs
Last synced: about 6 hours ago
JSON representation
A Node.js Enka.Network API wrapper for Genshin Impact.
- Host: GitHub
- URL: https://github.com/yuko1101/enka-network-api
- Owner: yuko1101
- License: mit
- Created: 2022-08-25T08:37:43.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-08T10:48:53.000Z (9 months ago)
- Last Synced: 2024-04-08T11:40:40.350Z (9 months ago)
- Topics: enka, enka-network, enkanetwork, genshin, genshin-api, genshin-artifacts, genshin-impact, node, nodejs
- Language: TypeScript
- Homepage: https://enka-network-api.vercel.app
- Size: 366 MB
- Stars: 87
- Watchers: 4
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# EnkaNetworkAPI
![Enka.Network](https://github.com/yuko1101/enka-network-api/blob/main/docs/static/img/enka-splash.png?raw=true)
## About
A Node.js Enka.Network API wrapper for Genshin Impact.
**This is NOT the source code of Enka.Network or its API.**
> [!TIP]
> If you need a wrapper for Honkai: Star Rail, you can use [starrail.js](https://github.com/yuko1101/starrail.js).### Features
- User Data and Character Stats using EnkaNetwork.
- All Characters and All Weapons Data. (Including More Advanced Info, such as Skill Attributes and Weapon Refinements.)
- Cache Updater for the new update of Genshin Impact. (Update characters and weapons immediately.)
- Honkai: Star Rail support with [starrail.js](https://github.com/yuko1101/starrail.js) integration. (See the example [here](https://github.com/yuko1101/enka-network-api/blob/main/example/starrail.js-integration.js).)## Installation
**Node.js 16 or newer is required.**
Install enka-network-api including genshin cache data.
```sh-session
npm install enka-network-api@latest
```Install using ghproxy.com
npm install enka-network-api@latest --enka-ghproxy=true
If you have already moved the cache to another folder, you can also install without downloading the cache.
```sh-session
npm install enka-network-api@latest --enka-nocache=true
```## About Genshin Cache Data
Genshin cache data is from [Dimbreath/AnimeGameData](https://gitlab.com/Dimbreath/AnimeGameData) (gitlab).This data contains data of characters, weapons, materials, and more structure information of Genshin Impact.
You can change your cache directory.
```js
const { EnkaClient } = require("enka-network-api");// Change the directory to store cache data.
// Default directory is node_modules/enka-network-api/cache.
const enka = new EnkaClient();
enka.cachedAssetsManager.cacheDirectoryPath = "./cache";
enka.cachedAssetsManager.cacheDirectorySetup();// OR
const enka = new EnkaClient({ cacheDirectory: "./cache" });
enka.cachedAssetsManager.cacheDirectorySetup();```
### Updating
You can update your genshin cache data.
```js
const { EnkaClient } = require("enka-network-api");
const enka = new EnkaClient({ showFetchCacheLog: true }); // showFetchCacheLog is true by defaultenka.cachedAssetsManager.fetchAllContents(); // returns promise
```Also, you can activate auto cache updater.
When using the auto-cache updater, we recommend moving the cache directory directly under your project folder.
```js
const { EnkaClient } = require("enka-network-api");
const enka = new EnkaClient();enka.cachedAssetsManager.activateAutoCacheUpdater({
instant: true, // Run the first update check immediately
timeout: 60 * 60 * 1000, // 1 hour interval
onUpdateStart: async () => {
console.log("Updating Genshin Data...");
},
onUpdateEnd: async () => {
enka.cachedAssetsManager.refreshAllData(); // Refresh memory
console.log("Updating Completed!");
}
});// // deactivate
// enka.cachedAssetsManager.deactivateAutoCacheUpdater();
```## How to use
### Fetching Player Data
[EnkaClient#fetchUser](https://enka-network-api.vercel.app/api/class/EnkaClient#fetchUser)
```js
const { EnkaClient } = require("enka-network-api");
const enka = new EnkaClient();enka.fetchUser(825436941).then(user => {
console.log(user);
});
```### Genshin Character List
[EnkaClient#getAllCharacters](https://enka-network-api.vercel.app/api/class/EnkaClient#getAllCharacters)
```js
const { EnkaClient } = require("enka-network-api");
const enka = new EnkaClient();const characters = enka.getAllCharacters();
// print character names in language "en"
console.log(characters.map(c => c.name.get("en")));
```### Genshin Weapon List
[EnkaClient#getAllWeapons](https://enka-network-api.vercel.app/api/class/EnkaClient#getAllWeapons)
```js
const { EnkaClient } = require("enka-network-api");
const enka = new EnkaClient();const weapons = enka.getAllWeapons();
// print weapon names in language "jp"
console.log(weapons.map(w => w.name.get("jp")));
```More examples are available in [example](https://github.com/yuko1101/enka-network-api/tree/main/example) folder.
For more information, please check [Documentation](https://enka-network-api.vercel.app).
You can see the changelog [here](https://github.com/yuko1101/enka-network-api/blob/main/CHANGELOG.md).