🌱 新v版角色列表&详情请求 #121

This commit is contained in:
目棃
2024-08-15 17:53:13 +08:00
parent 8c94710c24
commit a2e9bae018
7 changed files with 486 additions and 227 deletions

View File

@@ -1,8 +1,7 @@
/**
* @file web api TGApi.ts
* @file web/api/TGApi.ts
* @description 应用用到的 API
* @author BTMuli <bt-muli@outlook.com>
* @since Beta v0.3.2
* @since Beta v0.5.3
*/
import { BBSUserInfoApi } from "./BBS.js";
@@ -19,6 +18,8 @@ import {
TakumiCookieBindingRolesApi,
TakumiCalculateSyncAvatarListApi,
TakumiCalculateSyncAvatarDetailApi,
TakumiRecordCharacterListApi,
TakumiRecordCharacterDetailApi,
} from "./Takumi.js";
// 应用 API
@@ -35,6 +36,8 @@ const TGApi = {
getUserInfo: BBSUserInfoApi, // 获取用户信息
getAccounts: TakumiCookieBindingRolesApi, // 获取绑定角色
getCharacter: TakumiRecordCharactersApi, // 获取角色信息
getAvatarList: TakumiRecordCharacterListApi, // 获取角色列表
getAvatarDetail: TakumiRecordCharacterDetailApi, // 获取角色详情
},
bySToken: {
getAccounts: TakumiSTokenBindingRolesApi, // 获取绑定角色

View File

@@ -1,8 +1,7 @@
/**
* @file web api Takumi.ts
* @file web/api/Takumi.ts
* @description 定义 Takumi API
* @author BTMuli <bt-muli@outlook.com>
* @since Alpha v0.2.2
* @since Beta v0.5.3
*/
const TakumiApi = "https://api-takumi.mihoyo.com/"; // 基础 API
@@ -17,6 +16,8 @@ export const TakumiRecordDailyNotesApi = `${TakumiRecordApi}game_record/app/gens
export const TakumiRecordCardApi = `${TakumiRecordApi}game_record/app/card/wapi/getGameRecordCard`; // 游戏记录卡片 API
export const TakumiRecordIndexApi = `${TakumiRecordGenshinApi}index`; // 原神游戏记录索引 API
export const TakumiRecordCharactersApi = `${TakumiRecordGenshinApi}character`; // 原神游戏记录角色 API
export const TakumiRecordCharacterListApi = `${TakumiRecordCharactersApi}/list`; // 原神游戏记录角色列表 API
export const TakumiRecordCharacterDetailApi = `${TakumiRecordCharactersApi}/detail`; // 原神游戏记录角色详情 API
export const TakumiRecordAbyssApi = `${TakumiRecordGenshinApi}spiralAbyss`; // 原神游戏记录深境螺旋 API
export const TakumiSTokenBindingRolesApi = `${TakumiBindingApi}getUserGameRolesBySToken`; // 获取绑定角色 API-根据 stoken
export const TakumiCookieBindingRolesApi = `${TakumiBindingApi}getUserGameRolesByCookie`; // 获取绑定角色 API-根据 Cookie

View File

@@ -1,16 +1,16 @@
/**
* @file web/request/TGRequest.ts
* @description 应用用到的请求函数
* @since Beta v0.5.0
* @since Beta v0.5.3
*/
import { genAuthkey, genAuthkey2 } from "./genAuthkey.js";
import { getAbyss } from "./getAbyss.js";
import { getActionTicketBySToken } from "./getActionTicket.js";
import { getAnnoContent, getAnnoList } from "./getAnno.js";
import { getAvatarList, getAvatarDetail } from "./getAvatarDetail.js";
import { getCookieTokenByGameToken, getCookieTokenBySToken } from "./getCookieToken.js";
import { getDeviceFp } from "./getDeviceFp.js";
// import * from "./getEnkaData.ts";
import { getGachaLog } from "./getGachaLog.js";
import { getGameAccountsByCookie, getGameAccountsBySToken } from "./getGameAccounts.js";
import { getGameRecord } from "./getGameRecord.js";
@@ -41,6 +41,8 @@ const TGRequest = {
getAbyss,
getAccounts: getGameAccountsByCookie,
getUserInfo: getUserInfoByCookie,
getAvatarList,
getAvatarDetail,
},
byLToken: {
verify: verifyLToken,

View File

@@ -0,0 +1,69 @@
/**
* @file web/request/getAvatarDetail.ts
* @description 获取角色详情相关请求函数
* @since Beta v0.5.3
*/
import { app } from "@tauri-apps/api";
import TGHttp from "../../utils/TGHttp.js";
import TGApi from "../api/TGApi.js";
import TGUtils from "../utils/TGUtils.js";
/**
* @description 获取角色列表
* @since Beta v0.5.3
* @param {Record<string, string>} cookie Cookie
* @param {string} uid 用户 uid
* @return {Promise<TGApp.Game.Avatar.Avatar[]|TGApp.BBS.Response.Base>}
*/
export async function getAvatarList(
cookie: Record<string, string>,
uid: string,
): Promise<TGApp.Game.Avatar.Avatar[] | TGApp.BBS.Response.Base> {
const url = TGApi.GameData.byCookie.getAvatarList;
const data = { uid, region: TGUtils.Tools.getServerByUid(uid) };
const version = await app.getVersion();
const header = {
"User-Agent": `TeyvatGuide/${version}`,
Referer: "https://webstatic.mihoyo.com/",
Cookie: TGUtils.Tools.transCookie(cookie),
};
const resp = await TGHttp<TGApp.Game.Avatar.ListResponse | TGApp.BBS.Response.Base>(url, {
method: "POST",
body: JSON.stringify(data),
headers: header,
});
if (resp.retcode !== 0) return <TGApp.BBS.Response.Base>resp;
return resp.data.list;
}
/**
* @description 获取角色详情
* @since Beta v0.5.3
* @param {Record<string, string>} cookie Cookie
* @param {string} uid 用户 uid
* @param {number} avatarId 角色 id
* @return {Promise<TGApp.Game.Avatar.AvatarDetail|TGApp.BBS.Response.Base>}
*/
export async function getAvatarDetail(
cookie: Record<string, string>,
uid: string,
avatarId: number,
): Promise<TGApp.Game.Avatar.AvatarDetail | TGApp.BBS.Response.Base> {
const url = TGApi.GameData.byCookie.getAvatarDetail;
const params = { uid, region: TGUtils.Tools.getServerByUid(uid), avatar_id: avatarId };
const version = await app.getVersion();
const header = {
"User-Agent": `TeyvatGuide/${version}`,
Referer: "https://webstatic.mihoyo.com/",
Cookie: TGUtils.Tools.transCookie(cookie),
};
const resp = await TGHttp<TGApp.Game.Avatar.DetailResponse | TGApp.BBS.Response.Base>(url, {
method: "GET",
query: params,
headers: header,
});
if (resp.retcode !== 0) return <TGApp.BBS.Response.Base>resp;
return resp.data;
}

View File

@@ -1,21 +0,0 @@
// /**
// * @file web request getEnkaData.ts
// * @description 获取 ENKA 数据
// * @author BTMuli<bt-muli@outlook.com>
// * @since Alpha v0.1.3
// */
//
// // Tauri
// import { http } from "@tauri-apps/api";
// // Tauri.App
// import TGApi from "../api/TGApi";
//
// /**
// * @description 获取 ENKA 数据
// * @since Alpha v0.1.3
// * @param {number} uid 用户 UID
// * @returns {Promise<TGApp.Plugins.Enka>}
// */
// export async function getEnkaData (uid: number): Promise<BTMuli.App.Enka.Data> {
// return await http.fetch<BTMuli.App.Enka.Data>(`${TGApi.GameEnka}${uid}`).then((res) => res.data);
// }