Git Product home page Git Product logo

genshin-kit-node's Introduction

Genshin Kits for Node.js

一系列用于获取《原神》游戏相关资源的开发工具包。

A series of development kits for obtaining resources related to the Genshin Impact game.

任君挑选/Ecosystem

特色功能/Features

开箱即用/Out of box

安装/installation

# Via yarn
yarn add @genshin-kit/core
# Or via npm
npm install @genshin-kit/core

使用/usage

import { GenshinKit } from '@genshin-kit/core'
const genshin = new GenshinKit()
// ...

☆ P.S. 各包具体使用文档请在对应文件夹下查看/Please view the specific documents in the corresponding folder

丰富的 API,以及 types 支持/Full TypeScript supported

完全使用 TypeScript 编写,现代 IDE 自动代码提示,轻松使用无压力!

项目推荐/Good projects

这些项目使用 genshin-kit 开发/These projects were developed using Genshin kit:

名称/name 仓库/repo 说明/info
Genshin for koishi koishijs/koishi-plugin-genshin 为聊天机器人框架koishi设计的查询展示原神国服玩家数据以及抽卡模拟的插件。支持玩家卡片等功能。

想要分享您的作品吗?点击右上角的小铅笔!Want to share your work? Click the small pencil in the upper right corner!

贡献指南/Contributing guide

贡献指南/Contributing guide

加入我们/Join us!

#28

Analytics data


For communication and learning only.

All game data & pictures from query: ©miHoYo

Copyright 2021 Genshin-Kit

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

genshin-kit-node's People

Contributors

alpha5130 avatar chaniok avatar dependabot[bot] avatar dragon-fish avatar gorden0929 avatar sawa-ko avatar tawan475 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

genshin-kit-node's Issues

Missing characters, data required

简述此故障/Describe the bug

Read Title

如何重现此故障/To Reproduce

Install Genshin-Kit
run new util.CharacterNickname().getNicknamesById(10000002);

THE 10000002 CHARACTER IS MISSING

Go in ./node_modules/genshin-kit/lib/util/CharacterNickname.js Line: 28
There is suppose to be 10000002 (Ayaka) present, but not.

The temporary fix is to just add back in

  {
    id: 10000002,
    nicknames: [
      '神里绫华',
      'kamisatoayaka',
      'shenlilinghua',
      '白鹭霜华',
      '绫华',
      'ayaka',
    ],
   },

Please update in main release

本应出现的情况/Expected behavior

Return array of nicknames for 10000002

环境信息/Your environment

  • genshin-kit: latest
  • Node.js: v14.5.0
  • 系统/OS: Windows

Node.js v12 support

I run it on node.js v12, however, it threw an exception that won't happen on v14+

SyntaxError: Unexpected token "."

const temp = this._cache?.[uid]?.info;

I'm familiar with neither Node.js nor Typescript, how to fix it?

有什么方法能让python便利的调用代码呢?

新手开发者在写hoshino bot的插件,准备利用这个完成一个原神bot查询uid信息的功能,正痛苦的看着api获取到的东西自己分离字段就发现了这个,但python好像不太能用这个kit这是只支持js/ts吗?如果python想要调用js代码有什么便利的操作吗

[BUG] 关于国际服请求的错误

原来我玩的一直时官服,用这个来写树脂提醒,但最近我创建了国际服的账号,在写国际服的树脂提醒
的时候,发现查询信息错误,服务器的返回是403Forbidden,认真看了一下报错,发现

responseUrl: 'https://bbs-api-os.mihoyo.com/game_record/genshin/api/dailyNote'

那么我想我找到了问题,海外的米哈游服务器域名已经从 mihoyou 改成了 hoyoverse ,所以出现了 403。
(包版本:2.6.2)

我修改了本地的文件

//@genshin-kit\core\lib\module\_getApiEndpoint.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports._getApiEndpoint = void 0;
function _getApiEndpoint() {
    switch (this.serverType) {
        case 'os':
            //这里的 mihoyo 修改为 hoyoverse
            return 'https://bbs-api-os.hoyoverse.com/game_record/genshin/api/';
        case 'cn':
        default:
            return 'https://api-takumi-record.mihoyo.com/game_record/app/genshin/api/';
    }
}
exports._getApiEndpoint = _getApiEndpoint;
//# sourceMappingURL=_getApiEndpoint.js.map

修改后就可以正常使用了。

我不知道这个库你们还有没有维护,如果有,我觉得这个应该修改一下。

招贤纳士 / Join us (・ω・)ノ

此 issue 被关闭只是为了好看,依然欢迎加入我们!

简体中文(zh-Hans)

缘起

大家好,我是 GenshinKit 的原作者 @dragon-fish

说到我为什么要开发这个库,要追溯到我很早之前为自己的聊天 bot —— SILI酱 —— 开发原神插件的时候,那个时候还没有什么 GenshinKit,只是一段硬编码在我 bot 里的一段“米游社查询”的工具函数。

在 bot 的插件发版以前,我突然想到,“米游社查询”这部分功能除了 bot 以外也许还有许多其他方面的用途,但是搜索了以后发现大多数人都是在做自己的实现,Python 方面倒是有人做单独的轮子,Node.js 这块完全是空缺的。

所以,我后来把“米游社查询”这部分功能解耦了,这也就是 GenshinKit 的来历。

现状

米游社/hoyolab 经常会更新 App 版本,而每一次版本更新都会修改其中的 DS(动态密钥)算法,这是米游社查询中至关重要的一环,如果这部分不跟进,那么查询功能很快就会被米哈游拦截而废掉。

国服

目前国服部分是由我(@dragon-fish )跟进的。虽然我目前一直保持着跟进米游社的更新去更新 GenshinKit,但是其最为核心的 DS 算法其实并不是我本人扒出来的,大多数时候只是参考其他的仓库然后改编为 JavaScript 版本

我深深感受到了自己技术力不足,逆向工程、反混淆这些我一概不会,更别说那些和数学有关的计算公式了,其实我本人是一名文科专业学生,对于数学方面的实际运用仅限于菜场砍价了(笑

另外,我本人目前在现实生活中是一名**的大四学生,快毕业了,毕业以后我有很大概率是不会从事计算机相关工作的,是否有时间去摸代码实在是未知数。

国际服

目前国际服部分是由 @AlPha5130 (猫猫) 跟进的。国际服因为有 Web App 的缘故,获取 DS 算法相对来说容易一点。

但是从一堆打包混淆的代码里找到想要的部分依然不是什么容易的事情,而且猫猫目前也是一名大四学生,平时的空闲时间也不多,是被我硬拉来做苦力的,甚至被我拉来写 GenshinKit 的时候才被迫开始学习 TypeScript 的(笑

结语

能力不足加上缺少时间,指不定我们哪天就突然弃坑了,但这不是很可惜的一件事吗?所以现在很着急找到合作者一起维护这个库。

虽然我们目前——而且以后——一直会是开源库,参与进来不会获得任何物质上的收益,但是如果能交到有共同话题的朋友确实会是一件令人开心的事情。

综上所述,如果您愿意,或者您知道谁可能有意愿一起维护这个库,请务必在此处留言或加入我们的 QQ 群 (・ω・)ノ

QQ 群:942425330


碎碎念

也许人数更多以后我们可以建一个QQ群或者 Discord 讨论组什么的,平时除了讨论技术以外还可以一起联机挖挖矿什么的(×

我们不仅从 GenshinKit 里拿不到一分钱收入,每个月出新卡还会给米哈游充好多钱。所以,假如您是米哈游员工——请放我们一马.jpg——我们的一切行为源于热爱,我保证我本人从来没有进行过任何很过分的缺德请求。

我永远喜欢《原神》(震声)!米哈游请多出点萝莉角色,别让我跪下来求你(震声)!

[RFC] Roadmap for v3

GenshinKit v2 是用 TypeScript 基于 v1 的屎山代码重构的,虽然有了 types 支持,但是很多代码的逻辑因为技术债务事实上非常魔幻。

因此计划在近期进行一些逻辑重构和规范化。

本次更新将会是 major 更新,意味着大部分接口很可能不向前兼容。

拆分

  • getDS 拆分为独立包 @genshin-kit/dynamic-secret,版本号与米游社 App 同步(该包将作为官方 DS 生成器,这意味着将会支持用户自定义 DS 生成器以应对 mhy 突发更新)

命名规范

  • 将模块文件夹重命名为复数形式(utilutils
  • 使用 ES6 setter getter 取代 setCookie 等方法,这样校验数据更方便,逻辑也更清晰
  • 抛弃 getXxx setXxx 的命名方法, getUserRolesuserRoles (事实上 util.CharactersFilter 就遵守该命名规范)
  • 使用 # 字面量重命名私有变量,规范原有的 _ 开头的变量与方法

我收到一个错误无效请求

const { GenshinKit } = require('genshin-kit');
const App = new GenshinKit();
App.setServerType('os');
App.loginWithCookie('ltoken=token; ltuid=id');

App.getUserInfo(100000001).then(console.log, console.error);

我得到:

{ code: -10001, message: 'invalid request' }

This error pops up every time I tried to use getCharacter/getAbyss

node:internal/process/promises:246
triggerUncaughtException(err, true /* fromPromise */);
^

[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "#".] {
code: 'ERR_UNHANDLED_REJECTION'
}

[BUG?] 关于xxx的故障/The bug is about getting userinfo

I was trying to get the user info again I don't know if this is a bug or what but it says "Data is not public for this user"
Even though it is public on my account

Code:
console.log(this.client.genshin.getUserInfo(800151827).then(console.log, console.error))

Error:
{ code: 10102, message: 'Data is not public for the user' }

  • genshin-kit: 2.4.1
  • Node.js: 16

[BUG] 关于国服 UID 200000000 的合法性验证

选择您要汇报的包/Choose the package you want to report.

  • @genshin-kit/core
  • @genshin-kit/gacha

简述此故障/Describe the bug

188e4b1 中新增了支持 2 开头的 UID。

但是在验证国服 UID 200000000 是否合法时,返回 false

如何重现此故障/To Reproduce

直接使用 node 命令。

const { isValidCnUid } = require('genshin-kit').util;

isValidCnUid(200000000);
isValidCnUid(200000001);

本应出现的情况/Expected behavior

验证国服 UID 200000000 是否合法时,返回 true

截图/Screenshots

原神UID验证合法性

环境信息/Your environment

  • 包版本/pkg version: 2.4.2
  • Node.js: 14.15.0
  • 系统/OS: Windows

额外说明/Additional context

国服确实存在这个玩家,图片来自 Womsxd/YuanShen_User_Info#22

原神UID200000000

[BUG?] The bug is aboutspiral and getcharacter information

选择您要汇报的包/Choose the package you want to report.

  • @genshin-kit/core

简述此故障/Describe the bug

this bug i cant see getallcharacter and spiral

如何重现此故障/To Reproduce

i follow the tutorial included i add cookie

本应出现的情况/Expected behavior

截图/Screenshots

image

环境信息/Your environment

  • 包版本/pkg version: <2.5.0
  • Node.js 16.13.0
  • 系统/OS: Windows

额外说明/Additional context

Help function _getDS({ query, body })

function _getDS({ query, body }) {
^

TypeError: Cannot destructure property 'query' of 'undefined' as it is undefined.
at GenshinKit._getDS (/home/sureiya/CCG/node_modules/genshin-kit/lib/module/_getDS.js:10:19)
at GenshinKit._getHttpHeaders (/home/sureiya/CCG/node_modules/genshin-kit/lib/module/_getHttpHeaders.js:12:26)
at GenshinKit.request (/home/sureiya/CCG/node_modules/genshin-kit/lib/module/request.js:20:23)
at GenshinKit.getSpiralAbyss (/home/sureiya/CCG/node_modules/genshin-kit/lib/index.js:167:33)
at GenshinKit.getCurrentAbyss (/home/sureiya/CCG/node_modules/genshin-kit/lib/index.js:204:21)
at eval (eval at exec (/home/sureiya/CCG/Commands/Owner/Evalutate.js:38:20), :1:21)
at EvaluateCommand.exec (/home/sureiya/CCG/Commands/Owner/Evalutate.js:38:20)
at CommandHandler.runCommand (/home/sureiya/CCG/node_modules/discord-akairo/src/struct/commands/CommandHandler.js:768:39)
at CommandHandler.handleDirectCommand (/home/sureiya/CCG/node_modules/discord-akairo/src/struct/commands/CommandHandler.js:439:31)
at processTicksAndRejections (node:internal/process/task_queues:96:5)

请问所需的cookie是什么格式?

试了ltoken,也试了文档里document.cookie返回的结果

以上均出现{ code: 10001, message: 'Please login' }的错误

我是Asia地区的,也在.loginWithCookie()之前使用了.setServerType("os")

[BUG?] Request Failed 404

选择您要汇报的包/Choose the package you want to report.

  • @genshin-kit/core

I Just updated my Genshin-kit Core to 2.6.0 Previously I was using 2.5.0 (Genshin-Kit) and Tried to use the getUserInfo but I get a Request Failed 404
Error: Request Failed with Status 404

image

Environment
Node: 16.7.0

Issue with installation requirements

Find that typescript must be installed in order to use the package correctly.

Otherwise when trying to import this package it will through an MODULE_NOT_FOUND error, states that there is no #index.js# file under "node_modules/genshin-kit/src/lib/index.js", even with package.json the "main: lib/index.js" is specified.

Ran into this error while installation, installing typescript solved it for me

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.