forked from Cookies_Public/AquaDX
[O] Encapsulate all music
This commit is contained in:
parent
3804db142f
commit
8932a16468
@ -1,4 +1,4 @@
|
||||
import {aqua_host} from "./config";
|
||||
import {aqua_host, data_host} from "./config";
|
||||
import type {TrendEntry} from "./generalTypes";
|
||||
import type {MaimaiUserSummaryEntry} from "./maimaiTypes";
|
||||
|
||||
@ -32,6 +32,10 @@ export async function getMaimai(endpoint: string, params: any) {
|
||||
}).then(res => res.json())
|
||||
}
|
||||
|
||||
export async function getMaimaiAllMusic(): Promise<{ [key: string]: any }> {
|
||||
return fetch(`${data_host}/maimai/meta/00/all-music.json`).then(it => it.json())
|
||||
}
|
||||
|
||||
export async function getMaimaiApi(endpoint: string, params: any) {
|
||||
let url = new URL(`${aqua_host}/api/game/maimai2new/${endpoint}`)
|
||||
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))
|
||||
|
||||
@ -5,39 +5,22 @@ export interface Rating {
|
||||
}
|
||||
|
||||
export interface ParsedRating extends Rating {
|
||||
music: {
|
||||
name: string,
|
||||
composer: string,
|
||||
bpm: number,
|
||||
ver: number,
|
||||
note: {
|
||||
lv: number
|
||||
designer: string
|
||||
lv_id: number
|
||||
notes: number
|
||||
}
|
||||
},
|
||||
music: MaimaiMusic,
|
||||
calc: number,
|
||||
rank: string
|
||||
}
|
||||
|
||||
export interface MaiUserPreviewData {
|
||||
userName: string
|
||||
userId: number
|
||||
trophyId: number
|
||||
totalAwake: number
|
||||
playerRating: number
|
||||
partnerId: number
|
||||
nameplateId: number
|
||||
lastRomVersion: string
|
||||
lastPlayDate: string
|
||||
lastLoginDate: string
|
||||
lastGameId: string
|
||||
lastDataVersion: string
|
||||
isNetMember: boolean
|
||||
isLogin: boolean
|
||||
iconId: number
|
||||
frameId: number
|
||||
export interface MaimaiMusic {
|
||||
name: string,
|
||||
composer: string,
|
||||
bpm: number,
|
||||
ver: number,
|
||||
note: {
|
||||
lv: number
|
||||
designer: string
|
||||
lv_id: number
|
||||
notes: number
|
||||
}
|
||||
}
|
||||
|
||||
export interface MaimaiUserSummaryEntry {
|
||||
@ -59,5 +42,74 @@ export interface MaimaiUserSummaryEntry {
|
||||
lastVersion: string
|
||||
best35: string
|
||||
best15: string
|
||||
recent: Rating[]
|
||||
}
|
||||
recent: MaimaiUserPlaylog[]
|
||||
}
|
||||
|
||||
export interface MaimaiUserPlaylog {
|
||||
id: number;
|
||||
musicId: number;
|
||||
level: number;
|
||||
trackNo: number;
|
||||
vsRank: number;
|
||||
achievement: number;
|
||||
deluxscore: number;
|
||||
scoreRank: number;
|
||||
maxCombo: number;
|
||||
totalCombo: number;
|
||||
maxSync: number;
|
||||
totalSync: number;
|
||||
tapCriticalPerfect: number;
|
||||
tapPerfect: number;
|
||||
tapGreat: number;
|
||||
tapGood: number;
|
||||
tapMiss: number;
|
||||
holdCriticalPerfect: number;
|
||||
holdPerfect: number;
|
||||
holdGreat: number;
|
||||
holdGood: number;
|
||||
holdMiss: number;
|
||||
slideCriticalPerfect: number;
|
||||
slidePerfect: number;
|
||||
slideGreat: number;
|
||||
slideGood: number;
|
||||
slideMiss: number;
|
||||
touchCriticalPerfect: number;
|
||||
touchPerfect: number;
|
||||
touchGreat: number;
|
||||
touchGood: number;
|
||||
touchMiss: number;
|
||||
breakCriticalPerfect: number;
|
||||
breakPerfect: number;
|
||||
breakGreat: number;
|
||||
breakGood: number;
|
||||
breakMiss: number;
|
||||
isTap: boolean;
|
||||
isHold: boolean;
|
||||
isSlide: boolean;
|
||||
isTouch: boolean;
|
||||
isBreak: boolean;
|
||||
isCriticalDisp: boolean;
|
||||
isFastLateDisp: boolean;
|
||||
fastCount: number;
|
||||
lateCount: number;
|
||||
isAchieveNewRecord: boolean;
|
||||
isDeluxscoreNewRecord: boolean;
|
||||
comboStatus: number;
|
||||
syncStatus: number;
|
||||
isClear: boolean;
|
||||
beforeRating: number;
|
||||
afterRating: number;
|
||||
beforeGrade: number;
|
||||
afterGrade: number;
|
||||
afterGradeRank: number;
|
||||
beforeDeluxRating: number;
|
||||
afterDeluxRating: number;
|
||||
isPlayTutorial: boolean;
|
||||
isEventMode: boolean;
|
||||
isFreedomMode: boolean;
|
||||
playMode: number;
|
||||
isNewFree: boolean;
|
||||
trialPlayAchievement: number;
|
||||
extNum1: number;
|
||||
extNum2: number;
|
||||
}
|
||||
|
||||
@ -1,31 +1,30 @@
|
||||
<script lang="ts">
|
||||
import {data_host} from "../libs/config";
|
||||
import {getMaimai, getMult} from "../libs/maimai";
|
||||
import {getMaimaiAllMusic, getMaimai, getMult} from "../libs/maimai";
|
||||
import type {ParsedRating, Rating} from "../libs/maimaiTypes";
|
||||
|
||||
export let userId: any
|
||||
userId = +userId
|
||||
|
||||
if (!userId) console.error("No user ID provided")
|
||||
else {
|
||||
getMaimai("GetUserRatingApi", {userId}).then(it => {
|
||||
data = it
|
||||
parseRatings()
|
||||
})
|
||||
|
||||
fetch(`${data_host}/maimai/meta/00/all-music.json`).then(it => it.json()).then(it => {
|
||||
musicInfo = it
|
||||
parseRatings()
|
||||
})
|
||||
}
|
||||
Promise.all([
|
||||
getMaimai("GetUserRatingApi", {userId}),
|
||||
getMaimaiAllMusic().then(it => it.json())
|
||||
]).then(([rating, music]) => {
|
||||
data = rating
|
||||
musicInfo = music
|
||||
|
||||
if (!data || !musicInfo) {
|
||||
console.error("Failed to fetch data")
|
||||
return
|
||||
}
|
||||
|
||||
function parseRatings() {
|
||||
if (!data || !musicInfo) return
|
||||
parsedRatings = {
|
||||
old: parseRating(data.userRating.ratingList),
|
||||
new: parseRating(data.userRating.newRatingList)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function parseRating(arr: Rating[]) {
|
||||
return arr.map(x => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user