104 lines
2.1 KiB
TypeScript
Raw Normal View History

2022-04-09 00:28:37 +08:00
import request from '@/renderer/utils/request'
2022-03-13 14:40:38 +08:00
export enum SearchApiNames {
SEARCH = 'search',
MULTI_MATCH_SEARCH = 'multiMatchSearch',
}
// 搜索
export enum SearchTypes {
2022-03-29 00:11:05 +08:00
SINGLE = '1',
ALBUM = '10',
ARTIST = '100',
PLAYLIST = '1000',
USER = '1002',
MV = '1004',
LYRICS = '1006',
RADIO = '1009',
VIDEO = '1014',
ALL = '1018',
2022-03-13 14:40:38 +08:00
}
export interface SearchParams {
keywords: string
limit?: number // 返回数量 , 默认为 30
offset?: number // 偏移数量,用于分页 , 如 : 如 :( 页数 -1)*30, 其中 30 为 limit 的值 , 默认为 0
2022-03-29 00:11:05 +08:00
type: keyof typeof SearchTypes // type: 搜索类型
2022-03-13 14:40:38 +08:00
}
interface SearchResponse {
code: number
result: {
album: {
albums: Album[]
more: boolean
moreText: string
resourceIds: number[]
}
artist: {
artists: Artist[]
more: boolean
moreText: string
resourceIds: number[]
}
playList: {
playLists: Playlist[]
more: boolean
moreText: string
resourceIds: number[]
}
song: {
songs: Track[]
more: boolean
moreText: string
resourceIds: number[]
}
user: {
users: User[]
more: boolean
moreText: string
resourceIds: number[]
}
circle: unknown
new_mlog: unknown
order: string[]
rec_type: null
rec_query: null[]
sim_query: unknown
voice: unknown
voiceList: unknown
}
}
export function search(params: SearchParams): Promise<SearchResponse> {
return request({
url: '/search',
method: 'get',
2022-03-29 00:11:05 +08:00
params: {
...params,
type: SearchTypes[params.type ?? SearchTypes.ALL],
},
2022-03-13 14:40:38 +08:00
})
}
// 搜索多重匹配
export interface MultiMatchSearchParams {
keywords: string
}
interface MultiMatchSearchResponse {
code: number
result: {
album: Album[]
artist: Artist[]
playlist: Playlist[]
orpheus: unknown
orders: Array<'artist' | 'album'>
}
}
export function multiMatchSearch(
params: MultiMatchSearchParams
): Promise<MultiMatchSearchResponse> {
return request({
url: '/search/multimatch',
method: 'get',
params: params,
})
}