msr-mod/src/apis/index.ts
Astrian Zheng e415c1ef42
feat(AlbumDetail): 实现专辑详情页面的数据展示和布局
添加了专辑详情页面的数据获取逻辑和布局,包括专辑封面、名称、艺术家、简介和曲目列表的展示。同时,更新了路由参数和 API 请求路径,以支持专辑详情的动态加载。
2025-05-24 15:15:47 +10:00

43 lines
1.3 KiB
TypeScript

import axios from 'axios'
const msrInstance = axios.create({
baseURL: 'https://monster-siren.hypergryph.com/api/',
})
export default {
async getSongs() {
const songs: {
data: ApiResponse
} = await msrInstance.get('songs')
if (songs.data.code !== 0) { throw new Error(`Cannot get songs: ${songs.data.msg}`) }
return { songs: songs.data.data as { list: SongList } }
},
async getSong(cid: string) {
const song: {
data: ApiResponse
} = await msrInstance.get(`song/${cid}`)
if (song.data.code!== 0) { return new Error(`Cannot get song: ${song.data.msg}`) }
return { song: song.data.data as Song }
},
async getAlbums() {
const albums: {
data: ApiResponse
} = await msrInstance.get('albums')
if (albums.data.code!== 0) { throw new Error(`Cannot get albums: ${albums.data.msg}`) }
return albums.data.data as AlbumList
},
async getAlbum(cid: string) {
const album: {
data: ApiResponse
} = await msrInstance.get(`album/${cid}/detail`)
if (album.data.code!== 0) { throw new Error(`Cannot get album: ${album.data.msg}`) }
const albumMeta: {
data: ApiResponse
} = await msrInstance.get(`album/${cid}/data`)
let data = album.data.data as Album
data.artistes = (albumMeta.data.data as Album).artistes
console.log(albumMeta)
return data
}
}