mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-13 09:28:14 +08:00
🌱 新v版角色列表&详情请求 #121
This commit is contained in:
@@ -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, // 获取绑定角色
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
69
src/web/request/getAvatarDetail.ts
Normal file
69
src/web/request/getAvatarDetail.ts
Normal 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;
|
||||
}
|
||||
@@ -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);
|
||||
// }
|
||||
Reference in New Issue
Block a user