fix: 影视识别结果卡片不再渲染音乐专属标签

音乐标签(艺术家、专辑、发行日期、风格、时长等)增加 isMusic 保护,
避免电影/电视剧识别结果的 genres/release_date 等字段被误展示;
补充影视场景的回归测试。
This commit is contained in:
jxxghp
2026-08-09 10:54:05 +08:00
parent 009ce6173b
commit 20fcd699f2
2 changed files with 49 additions and 11 deletions

View File

@@ -127,16 +127,24 @@ function openMusicDetail() {
{{ context?.media_info?.music_type }}
</VChip>
<!-- 艺术家 -->
<VChip v-if="context?.media_info?.artist" variant="elevated" class="me-1 mb-1 text-white bg-purple-500">
<VChip
v-if="isMusic && context?.media_info?.artist"
variant="elevated"
class="me-1 mb-1 text-white bg-purple-500"
>
{{ context?.media_info?.artist }}
</VChip>
<!-- 专辑 -->
<VChip v-if="context?.media_info?.album" variant="elevated" class="me-1 mb-1 text-white bg-purple-500">
<VChip
v-if="isMusic && context?.media_info?.album"
variant="elevated"
class="me-1 mb-1 text-white bg-purple-500"
>
{{ context?.media_info?.album }}
</VChip>
<!-- 专辑艺术家 -->
<VChip
v-if="context?.media_info?.album_artist"
v-if="isMusic && context?.media_info?.album_artist"
variant="elevated"
class="me-1 mb-1 text-white bg-purple-500"
>
@@ -144,7 +152,7 @@ function openMusicDetail() {
</VChip>
<!-- 发行日期 -->
<VChip
v-if="context?.media_info?.release_date"
v-if="isMusic && context?.media_info?.release_date"
variant="elevated"
class="me-1 mb-1 text-white bg-purple-500"
>
@@ -152,7 +160,7 @@ function openMusicDetail() {
</VChip>
<!-- 风格 -->
<VChip
v-for="genre in context?.media_info?.genres"
v-for="genre in isMusic ? context?.media_info?.genres : []"
:key="genre"
variant="elevated"
class="me-1 mb-1 text-white bg-purple-500"
@@ -161,14 +169,14 @@ function openMusicDetail() {
</VChip>
<!-- 音频技术参数 -->
<VChip
v-if="context?.meta_info?.audio_format"
v-if="isMusic && context?.meta_info?.audio_format"
variant="elevated"
class="me-1 mb-1 text-white bg-orange-500"
>
{{ context?.meta_info?.audio_format }}
</VChip>
<VChip
v-if="context?.meta_info?.bit_depth || context?.meta_info?.sample_rate"
v-if="isMusic && (context?.meta_info?.bit_depth || context?.meta_info?.sample_rate)"
variant="elevated"
class="me-1 mb-1 text-white bg-orange-500"
>
@@ -176,7 +184,7 @@ function openMusicDetail() {
</VChip>
<!-- 时长 -->
<VChip
v-if="formatDuration(context?.media_info?.duration)"
v-if="isMusic && formatDuration(context?.media_info?.duration)"
variant="elevated"
class="me-1 mb-1 text-white bg-orange-500"
>
@@ -184,19 +192,23 @@ function openMusicDetail() {
</VChip>
<!-- 曲目信息 -->
<VChip
v-if="context?.media_info?.track_number"
v-if="isMusic && context?.media_info?.track_number"
variant="elevated"
class="me-1 mb-1 text-white bg-red-500"
>
{{ `曲目 ${context?.media_info?.track_number}${context?.media_info?.total_tracks ? ` / ${context?.media_info?.total_tracks}` : ''}` }}
</VChip>
<!-- ISRC -->
<VChip v-if="context?.media_info?.isrc" variant="elevated" class="me-1 mb-1 text-white bg-red-500">
<VChip
v-if="isMusic && context?.media_info?.isrc"
variant="elevated"
class="me-1 mb-1 text-white bg-red-500"
>
{{ context?.media_info?.isrc }}
</VChip>
<!-- MusicBrainz 外链 -->
<VChip
v-if="musicLink"
v-if="isMusic && musicLink"
variant="elevated"
class="me-1 mb-1 text-white bg-green-500"
@click="openMusicDetail"

View File

@@ -25,4 +25,30 @@ describe('MediaInfoCard', () => {
expect(screen.getByText('晴天')).toBeInTheDocument()
expect(screen.queryByText('识别失败,无法识别到有效信息!')).not.toBeInTheDocument()
})
it('does not render music tags for movie contexts', async () => {
await renderWithProviders(MediaInfoCard, {
props: {
context: {
meta_info: {
name: '流浪地球',
type: '电影',
},
media_info: {
title: '流浪地球',
type: '电影',
release_date: '2019-02-05',
genres: ['科幻', '冒险'],
year: 2019,
},
},
},
})
// 影视结果不应出现音乐专属标签:日期、风格、艺术家等
expect(screen.getByText('流浪地球')).toBeInTheDocument()
expect(screen.queryByText('2019-02-05')).not.toBeInTheDocument()
expect(screen.queryByText('科幻')).not.toBeInTheDocument()
expect(screen.queryByText('冒险')).not.toBeInTheDocument()
})
})