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,
|
|
|
|
})
|
|
|
|
}
|