🌱 完成深渊数据获取

This commit is contained in:
BTMuli
2023-05-22 18:35:45 +08:00
parent cc20aa430a
commit 3c639cf0d2
8 changed files with 59 additions and 20 deletions

View File

@@ -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, // 获取深境螺旋信息
},
};

View File

@@ -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

View File

@@ -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,

View File

@@ -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}`;

View File

@@ -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,
},

View 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;
});
}

View File

@@ -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),
};

View File

@@ -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);
}