mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-13 09:28: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 { PassportTokenApi, PassportCookieTokenApi, PassportVerifyApi } from "./Passport";
|
||||||
import {
|
import {
|
||||||
TakumiTokensApi, TakumiRecordCardApi,
|
TakumiTokensApi, TakumiRecordCardApi,
|
||||||
TakumiRecordGenshinCharacterApi, TakumiRecordGenshinIndexApi,
|
TakumiRecordCharactersApi, TakumiRecordIndexApi,
|
||||||
TakumiRecordGenshinSpiralAbyssApi, TakumiSTokenBindingRolesApi,
|
TakumiRecordAbyssApi, TakumiSTokenBindingRolesApi,
|
||||||
TakumiCookieBindingRolesApi,
|
TakumiCookieBindingRolesApi,
|
||||||
} from "./Takumi";
|
} from "./Takumi";
|
||||||
|
|
||||||
@@ -32,14 +32,14 @@ const TGApi = {
|
|||||||
byCookie: {
|
byCookie: {
|
||||||
getUserInfo: BBSUserInfoApi, // 获取用户信息
|
getUserInfo: BBSUserInfoApi, // 获取用户信息
|
||||||
getAccounts: TakumiCookieBindingRolesApi, // 获取绑定角色
|
getAccounts: TakumiCookieBindingRolesApi, // 获取绑定角色
|
||||||
getCharacter: TakumiRecordGenshinCharacterApi, // 获取角色信息
|
getCharacter: TakumiRecordCharactersApi, // 获取角色信息
|
||||||
},
|
},
|
||||||
bySToken: {
|
bySToken: {
|
||||||
getAccounts: TakumiSTokenBindingRolesApi, // 获取绑定角色
|
getAccounts: TakumiSTokenBindingRolesApi, // 获取绑定角色
|
||||||
},
|
},
|
||||||
getUserCard: TakumiRecordCardApi, // 获取用户卡片
|
getUserCard: TakumiRecordCardApi, // 获取用户卡片
|
||||||
getUserBase: TakumiRecordGenshinIndexApi, // 获取用户基本信息
|
getUserBase: TakumiRecordIndexApi, // 获取用户基本信息
|
||||||
getAbyss: TakumiRecordGenshinSpiralAbyssApi, // 获取深境螺旋信息
|
getAbyss: TakumiRecordAbyssApi, // 获取深境螺旋信息
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ const TakumiAuthApi = `${TakumiApi}auth/api/`; // 认证 API
|
|||||||
export const TakumiTokensApi = `${TakumiAuthApi}getMultiTokenByLoginTicket`; // 登录票据 API
|
export const TakumiTokensApi = `${TakumiAuthApi}getMultiTokenByLoginTicket`; // 登录票据 API
|
||||||
export const TakumiActionTicketsApi = `${TakumiAuthApi}getActionTicketByStoken`; // 行为票据 API
|
export const TakumiActionTicketsApi = `${TakumiAuthApi}getActionTicketByStoken`; // 行为票据 API
|
||||||
export const TakumiRecordCardApi = `${TakumiRecordApi}game_record/app/card/wapi/getGameRecordCard`; // 游戏记录卡片 API
|
export const TakumiRecordCardApi = `${TakumiRecordApi}game_record/app/card/wapi/getGameRecordCard`; // 游戏记录卡片 API
|
||||||
export const TakumiRecordGenshinIndexApi = `${TakumiRecordGenshinApi}index`; // 原神游戏记录索引 API
|
export const TakumiRecordIndexApi = `${TakumiRecordGenshinApi}index`; // 原神游戏记录索引 API
|
||||||
export const TakumiRecordGenshinCharacterApi = `${TakumiRecordGenshinApi}character`; // 原神游戏记录角色 API
|
export const TakumiRecordCharactersApi = `${TakumiRecordGenshinApi}character`; // 原神游戏记录角色 API
|
||||||
export const TakumiRecordGenshinSpiralAbyssApi = `${TakumiRecordGenshinApi}spiralAbyss`; // 原神游戏记录深境螺旋 API
|
export const TakumiRecordAbyssApi = `${TakumiRecordGenshinApi}spiralAbyss`; // 原神游戏记录深境螺旋 API
|
||||||
export const TakumiSTokenBindingRolesApi = `${TakumiBindingApi}getUserGameRolesBySToken`; // 获取绑定角色 API-根据 stoken
|
export const TakumiSTokenBindingRolesApi = `${TakumiBindingApi}getUserGameRolesBySToken`; // 获取绑定角色 API-根据 stoken
|
||||||
export const TakumiCookieBindingRolesApi = `${TakumiBindingApi}getUserGameRolesByCookie`; // 获取绑定角色 API-根据 Cookie
|
export const TakumiCookieBindingRolesApi = `${TakumiBindingApi}getUserGameRolesByCookie`; // 获取绑定角色 API-根据 Cookie
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* @since Alpha v0.2.0
|
* @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 SALT from "./salt";
|
||||||
import SERVER from "./server";
|
import SERVER from "./server";
|
||||||
import { GAME_BIZ } from "./utils";
|
import { GAME_BIZ } from "./utils";
|
||||||
@@ -14,7 +14,6 @@ const TGConstant = {
|
|||||||
BBS: {
|
BBS: {
|
||||||
VERSION: BBS_VERSION,
|
VERSION: BBS_VERSION,
|
||||||
USER_AGENT: BBS_HEADER_AGENT,
|
USER_AGENT: BBS_HEADER_AGENT,
|
||||||
REFERER: BBS_REFERER,
|
|
||||||
},
|
},
|
||||||
Salt: SALT,
|
Salt: SALT,
|
||||||
Server: SERVER,
|
Server: SERVER,
|
||||||
|
|||||||
@@ -5,6 +5,5 @@
|
|||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const BBS_VERSION = "2.49.1";
|
export const BBS_VERSION = "2.50.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_HEADER_AGENT = `Mozilla/5.0 (Windows NT 10.0; Win64; x64) miHoYoBBS/${BBS_VERSION}`;
|
||||||
export const BBS_REFERER = "https://webstatic.mihoyo.com";
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { getAbyss } from "./getAbyss";
|
||||||
import { getAnnoList, getAnnoContent } from "./getAnno";
|
import { getAnnoList, getAnnoContent } from "./getAnno";
|
||||||
import { getCookieTokenBySToken } from "./getCookieToken";
|
import { getCookieTokenBySToken } from "./getCookieToken";
|
||||||
// import * from "./getEnkaData.ts";
|
// import * from "./getEnkaData.ts";
|
||||||
@@ -29,6 +30,7 @@ const TGRequest = {
|
|||||||
getTokens: getTokensByLoginTicket,
|
getTokens: getTokensByLoginTicket,
|
||||||
},
|
},
|
||||||
byCookie: {
|
byCookie: {
|
||||||
|
getAbyss,
|
||||||
getAccounts: getGameAccountsByCookie,
|
getAccounts: getGameAccountsByCookie,
|
||||||
getUserInfo: getUserInfoByCookie,
|
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,
|
"User-Agent": TGConstant.BBS.USER_AGENT,
|
||||||
"x-rpc-app_version": TGConstant.BBS.VERSION,
|
"x-rpc-app_version": TGConstant.BBS.VERSION,
|
||||||
"x-rpc-client_type": "5",
|
"x-rpc-client_type": "5",
|
||||||
Referer: TGConstant.BBS.REFERER,
|
"x-requested-with": "com.mihoyo.hyperion",
|
||||||
|
Referer: "https://webstatic.mihoyo.com",
|
||||||
DS: ds,
|
DS: ds,
|
||||||
Cookie: transCookie(cookie),
|
Cookie: transCookie(cookie),
|
||||||
};
|
};
|
||||||
@@ -117,7 +118,8 @@ export function getRequestSignHeader (cookie: Record<string, string>, method: st
|
|||||||
"User-Agent": TGConstant.BBS.USER_AGENT,
|
"User-Agent": TGConstant.BBS.USER_AGENT,
|
||||||
"x-rpc-app_version": TGConstant.BBS.VERSION,
|
"x-rpc-app_version": TGConstant.BBS.VERSION,
|
||||||
"x-rpc-client_type": "5",
|
"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),
|
DS: getDS(method, transParams(data), saltType, true),
|
||||||
Cookie: transCookie(cookie),
|
Cookie: transCookie(cookie),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -29,21 +29,21 @@ export function decodeRegExp (data: string): string {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 将 cookie 对象转换为字符串
|
* @description 将 cookie 对象转换为字符串
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.1.5
|
||||||
* @param {Record<string, string>} cookie cookie
|
* @param {Record<string, string>} cookie cookie
|
||||||
* @returns {string} 转换后的 cookie
|
* @returns {string} 转换后的 cookie
|
||||||
*/
|
*/
|
||||||
export function transCookie (cookie: Record<string, string>) {
|
export function transCookie (cookie: Record<string, string>) {
|
||||||
let res = "";
|
let res = "";
|
||||||
for (const [key, value] of Object.entries(cookie)) {
|
for (const key of Object.keys(cookie).sort()) {
|
||||||
res += `${key}=${value};`;
|
res += `${key}=${cookie[key]};`;
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description ds 算法需要数据转换后的字符串是按照字典序排序的
|
* @description ds 算法需要数据转换后的字符串是按照字典序排序的
|
||||||
* @since Alpha v0.2.0
|
* @since Alpha v0.1.5
|
||||||
* @param {Record<string, string|number>} obj object
|
* @param {Record<string, string|number>} obj object
|
||||||
* @returns {string} query string
|
* @returns {string} query string
|
||||||
*/
|
*/
|
||||||
@@ -51,7 +51,7 @@ export function transParams (obj: Record<string, string | number>): string {
|
|||||||
let res = "";
|
let res = "";
|
||||||
const keys = Object.keys(obj).sort();
|
const keys = Object.keys(obj).sort();
|
||||||
for (const key of keys) {
|
for (const key of keys) {
|
||||||
res += `${key}=${obj[key]}&`;
|
res += `${key}=${obj[key].toString()}&`;
|
||||||
}
|
}
|
||||||
return res.slice(0, -1);
|
return res.slice(0, -1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user