feat: 优化音乐卡片与搜索站点筛选

This commit is contained in:
jxxghp
2026-08-09 18:12:29 +08:00
parent d1d46353dd
commit 6db19ee6f7
16 changed files with 602 additions and 158 deletions
+10 -7
View File
@@ -66,15 +66,18 @@ describe('music utils', () => {
it('builds the site resource route from the metadata identity', () => {
expect(
buildMusicResourceRoute({
source: 'musicbrainz',
media_id: 'recording-1',
title: '晴天',
year: '2003',
} as never),
buildMusicResourceRoute(
{
source: 'musicbrainz',
media_id: 'recording-1',
title: '晴天',
year: '2003',
} as never,
[11, 12],
),
).toMatchObject({
path: '/resource',
query: { keyword: 'musicbrainz:recording-1', type: '音乐' },
query: { keyword: 'musicbrainz:recording-1', sites: '11,12', type: '音乐' },
})
})
+5 -1
View File
@@ -59,7 +59,10 @@ export function buildMusicDetailRoute(item: MusicRouteTarget): RouteLocationRaw
}
/** 构造音乐元数据身份对应的站点资源搜索路由。 */
export function buildMusicResourceRoute(item: MediaInfo | MusicAlbumInfo): RouteLocationRaw | undefined {
export function buildMusicResourceRoute(
item: MediaInfo | MusicAlbumInfo,
sites: number[] = [],
): RouteLocationRaw | undefined {
const source = getMusicSource(item as MusicRouteTarget)
if (!source || !item.media_id) return undefined
return {
@@ -71,6 +74,7 @@ export function buildMusicResourceRoute(item: MediaInfo | MusicAlbumInfo): Route
year: item.year,
area: 'title',
result_type: 'torrent',
...(sites.length ? { sites: sites.join(',') } : {}),
},
}
}