mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-12 09:18:14 +08:00
🌱 完成深渊数据获取
This commit is contained in:
@@ -11,8 +11,8 @@ import { Hk4eAnnoListApi, Hk4eAnnoContentApi, Hk4eAnnoQuery } from "./Hk4e";
|
||||
import { PassportTokenApi, PassportCookieTokenApi, PassportVerifyApi } from "./Passport";
|
||||
import {
|
||||
TakumiTokensApi, TakumiRecordCardApi,
|
||||
TakumiRecordGenshinCharacterApi, TakumiRecordGenshinIndexApi,
|
||||
TakumiRecordGenshinSpiralAbyssApi, TakumiSTokenBindingRolesApi,
|
||||
TakumiRecordCharactersApi, TakumiRecordIndexApi,
|
||||
TakumiRecordAbyssApi, TakumiSTokenBindingRolesApi,
|
||||
TakumiCookieBindingRolesApi,
|
||||
} from "./Takumi";
|
||||
|
||||
@@ -32,14 +32,14 @@ const TGApi = {
|
||||
byCookie: {
|
||||
getUserInfo: BBSUserInfoApi, // 获取用户信息
|
||||
getAccounts: TakumiCookieBindingRolesApi, // 获取绑定角色
|
||||
getCharacter: TakumiRecordGenshinCharacterApi, // 获取角色信息
|
||||
getCharacter: TakumiRecordCharactersApi, // 获取角色信息
|
||||
},
|
||||
bySToken: {
|
||||
getAccounts: TakumiSTokenBindingRolesApi, // 获取绑定角色
|
||||
},
|
||||
getUserCard: TakumiRecordCardApi, // 获取用户卡片
|
||||
getUserBase: TakumiRecordGenshinIndexApi, // 获取用户基本信息
|
||||
getAbyss: TakumiRecordGenshinSpiralAbyssApi, // 获取深境螺旋信息
|
||||
getUserBase: TakumiRecordIndexApi, // 获取用户基本信息
|
||||
getAbyss: TakumiRecordAbyssApi, // 获取深境螺旋信息
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ const TakumiAuthApi = `${TakumiApi}auth/api/`; // 认证 API
|
||||
export const TakumiTokensApi = `${TakumiAuthApi}getMultiTokenByLoginTicket`; // 登录票据 API
|
||||
export const TakumiActionTicketsApi = `${TakumiAuthApi}getActionTicketByStoken`; // 行为票据 API
|
||||
export const TakumiRecordCardApi = `${TakumiRecordApi}game_record/app/card/wapi/getGameRecordCard`; // 游戏记录卡片 API
|
||||
export const TakumiRecordGenshinIndexApi = `${TakumiRecordGenshinApi}index`; // 原神游戏记录索引 API
|
||||
export const TakumiRecordGenshinCharacterApi = `${TakumiRecordGenshinApi}character`; // 原神游戏记录角色 API
|
||||
export const TakumiRecordGenshinSpiralAbyssApi = `${TakumiRecordGenshinApi}spiralAbyss`; // 原神游戏记录深境螺旋 API
|
||||
export const TakumiRecordIndexApi = `${TakumiRecordGenshinApi}index`; // 原神游戏记录索引 API
|
||||
export const TakumiRecordCharactersApi = `${TakumiRecordGenshinApi}character`; // 原神游戏记录角色 API
|
||||
export const TakumiRecordAbyssApi = `${TakumiRecordGenshinApi}spiralAbyss`; // 原神游戏记录深境螺旋 API
|
||||
export const TakumiSTokenBindingRolesApi = `${TakumiBindingApi}getUserGameRolesBySToken`; // 获取绑定角色 API-根据 stoken
|
||||
export const TakumiCookieBindingRolesApi = `${TakumiBindingApi}getUserGameRolesByCookie`; // 获取绑定角色 API-根据 Cookie
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* @since Alpha v0.2.0
|
||||
*/
|
||||
|
||||
import { BBS_VERSION, BBS_HEADER_AGENT, BBS_REFERER } from "./bbs";
|
||||
import { BBS_VERSION, BBS_HEADER_AGENT } from "./bbs";
|
||||
import SALT from "./salt";
|
||||
import SERVER from "./server";
|
||||
import { GAME_BIZ } from "./utils";
|
||||
@@ -14,7 +14,6 @@ const TGConstant = {
|
||||
BBS: {
|
||||
VERSION: BBS_VERSION,
|
||||
USER_AGENT: BBS_HEADER_AGENT,
|
||||
REFERER: BBS_REFERER,
|
||||
},
|
||||
Salt: SALT,
|
||||
Server: SERVER,
|
||||
|
||||
@@ -5,6 +5,5 @@
|
||||
* @since Alpha v0.2.0
|
||||
*/
|
||||
|
||||
export const BBS_VERSION = "2.49.1";
|
||||
export const BBS_HEADER_AGENT = `Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/${BBS_VERSION}`;
|
||||
export const BBS_REFERER = "https://webstatic.mihoyo.com";
|
||||
export const BBS_VERSION = "2.50.1";
|
||||
export const BBS_HEADER_AGENT = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) miHoYoBBS/${BBS_VERSION}`;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
* @since Alpha v0.2.0
|
||||
*/
|
||||
|
||||
import { getAbyss } from "./getAbyss";
|
||||
import { getAnnoList, getAnnoContent } from "./getAnno";
|
||||
import { getCookieTokenBySToken } from "./getCookieToken";
|
||||
// import * from "./getEnkaData.ts";
|
||||
@@ -29,6 +30,7 @@ const TGRequest = {
|
||||
getTokens: getTokensByLoginTicket,
|
||||
},
|
||||
byCookie: {
|
||||
getAbyss,
|
||||
getAccounts: getGameAccountsByCookie,
|
||||
getUserInfo: getUserInfoByCookie,
|
||||
},
|
||||
|
||||
37
src/web/request/getAbyss.ts
Normal file
37
src/web/request/getAbyss.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @file web request getAbyss.ts
|
||||
* @description 获取深渊信息
|
||||
* @author BTMuli<bt-muli@outlook.com>
|
||||
* @since Alpha v0.2.0
|
||||
*/
|
||||
|
||||
// tauri
|
||||
import { http } from "@tauri-apps/api";
|
||||
// api
|
||||
import TGApi from "../api/TGApi";
|
||||
// utils
|
||||
import { getServerByUid } from "../utils/tools";
|
||||
import { getRequestHeader } from "../utils/getRequestHeader";
|
||||
|
||||
/**
|
||||
* @description 获取深渊信息
|
||||
* @since Alpha v0.2.0
|
||||
* @param {Record<string, string>} cookie cookie
|
||||
* @param {string} schedule_type 0: 本期, 1: 上期
|
||||
* @param {BTMuli.User.Game.Account} account 游戏账号
|
||||
* @returns {Promise<unknown|BTMuli.Genshin.Base.Response>}
|
||||
*/
|
||||
export async function getAbyss (cookie: Record<string, string>, schedule_type: string, account: BTMuli.User.Game.Account): Promise<unknown | BTMuli.Genshin.Base.Response> {
|
||||
const url = TGApi.GameData.getAbyss;
|
||||
const role_id = account.game_uid;
|
||||
const params = { role_id, schedule_type, server: getServerByUid(role_id) };
|
||||
const header = getRequestHeader(cookie, "GET", params, "common");
|
||||
return await http.fetch<any>(url, {
|
||||
method: "GET",
|
||||
headers: header,
|
||||
query: params,
|
||||
}).then(res => {
|
||||
if (res.data.retcode !== 0) return res.data;
|
||||
return res.data.data as unknown;
|
||||
});
|
||||
}
|
||||
@@ -97,7 +97,8 @@ export function getRequestHeader (cookie: Record<string, string>, method: string
|
||||
"User-Agent": TGConstant.BBS.USER_AGENT,
|
||||
"x-rpc-app_version": TGConstant.BBS.VERSION,
|
||||
"x-rpc-client_type": "5",
|
||||
Referer: TGConstant.BBS.REFERER,
|
||||
"x-requested-with": "com.mihoyo.hyperion",
|
||||
Referer: "https://webstatic.mihoyo.com",
|
||||
DS: ds,
|
||||
Cookie: transCookie(cookie),
|
||||
};
|
||||
@@ -117,7 +118,8 @@ export function getRequestSignHeader (cookie: Record<string, string>, method: st
|
||||
"User-Agent": TGConstant.BBS.USER_AGENT,
|
||||
"x-rpc-app_version": TGConstant.BBS.VERSION,
|
||||
"x-rpc-client_type": "5",
|
||||
Referer: TGConstant.BBS.REFERER,
|
||||
"x-requested-with": "com.mihoyo.hyperion",
|
||||
Referer: "https://webstatic.mihoyo.com",
|
||||
DS: getDS(method, transParams(data), saltType, true),
|
||||
Cookie: transCookie(cookie),
|
||||
};
|
||||
|
||||
@@ -29,21 +29,21 @@ export function decodeRegExp (data: string): string {
|
||||
|
||||
/**
|
||||
* @description 将 cookie 对象转换为字符串
|
||||
* @since Alpha v0.2.0
|
||||
* @since Alpha v0.1.5
|
||||
* @param {Record<string, string>} cookie cookie
|
||||
* @returns {string} 转换后的 cookie
|
||||
*/
|
||||
export function transCookie (cookie: Record<string, string>) {
|
||||
let res = "";
|
||||
for (const [key, value] of Object.entries(cookie)) {
|
||||
res += `${key}=${value};`;
|
||||
for (const key of Object.keys(cookie).sort()) {
|
||||
res += `${key}=${cookie[key]};`;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description ds 算法需要数据转换后的字符串是按照字典序排序的
|
||||
* @since Alpha v0.2.0
|
||||
* @since Alpha v0.1.5
|
||||
* @param {Record<string, string|number>} obj object
|
||||
* @returns {string} query string
|
||||
*/
|
||||
@@ -51,7 +51,7 @@ export function transParams (obj: Record<string, string | number>): string {
|
||||
let res = "";
|
||||
const keys = Object.keys(obj).sort();
|
||||
for (const key of keys) {
|
||||
res += `${key}=${obj[key]}&`;
|
||||
res += `${key}=${obj[key].toString()}&`;
|
||||
}
|
||||
return res.slice(0, -1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user