From d3d0d847f636980840504f5efe02788074e578c1 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 10 Jun 2026 00:54:59 +0800 Subject: [PATCH] fix: show subtitle episode metadata --- src/api/types.ts | 6 +++++ src/components/cards/SubtitleCard.vue | 3 +++ src/components/cards/SubtitleItem.vue | 3 +++ src/views/discover/MediaDetailView.vue | 34 ++++++++++++++++---------- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/api/types.ts b/src/api/types.ts index 8b692ca1..f6e4987e 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -812,6 +812,12 @@ export interface SubtitleInfo { subtitle_id?: string // 下载文件名 file_name?: string + // 识别元数据 + meta_info?: MetaInfo + // SxxExx + season_episode?: string + // 集列表 + episode_list?: number[] } // 识别元数据 diff --git a/src/components/cards/SubtitleCard.vue b/src/components/cards/SubtitleCard.vue index e14c5b83..a37fb7b8 100644 --- a/src/components/cards/SubtitleCard.vue +++ b/src/components/cards/SubtitleCard.vue @@ -127,6 +127,9 @@ watch(
+ + {{ subtitle.season_episode }} +
{{ subtitle?.site_name }} + + {{ subtitle.season_episode }} + ([]) // 搜索方式 title/imdbid const searchType = ref('title') +interface MediaSearchOptions { + season?: number | null + episode?: number | null +} + +// 站点选择后待执行的搜索类型 +const pendingSearchResultType = ref<'torrent' | 'subtitle'>('torrent') + +// 站点选择后待执行的季集参数 +const pendingSearchOptions = ref({}) + // 计算主题是否为透明 const isTransparentTheme = computed(() => { return theme.name.value === 'transparent' @@ -494,11 +505,6 @@ function joinArray(arr: string[]) { return arr.join('、') } -interface MediaSearchOptions { - season?: number | null - episode?: number | null -} - // 开始搜索 function handleSearch(resultType: 'torrent' | 'subtitle' = 'torrent', options: MediaSearchOptions = {}) { const keyword = getMediaId() @@ -563,9 +569,11 @@ function onSubscribeEditRemove() { else checkSeasonsSubscribed() } -// 点击搜索 -async function clickSearch(type: string) { +// 搜索前弹出站点选择框,确认后执行资源或字幕搜索。 +async function clickSearch(type: string, resultType: 'torrent' | 'subtitle' = 'torrent', options: MediaSearchOptions = {}) { searchType.value = type + pendingSearchResultType.value = resultType + pendingSearchOptions.value = options if (allSites.value?.length == 0) { await querySites() await querySelectedSites() @@ -573,24 +581,24 @@ async function clickSearch(type: string) { if (allSites.value?.length > 0) { openSearchSiteDialog() } else { - handleSearch() + handleSearch(pendingSearchResultType.value, pendingSearchOptions.value) } } // 搜索多站点 function searchSites(sites: number[]) { selectedSites.value = sites - handleSearch() + handleSearch(pendingSearchResultType.value, pendingSearchOptions.value) } // 搜索字幕 -function handleSubtitleSearch() { - handleSearch('subtitle') +async function handleSubtitleSearch() { + await clickSearch('title', 'subtitle') } // 搜索单集字幕 -function handleEpisodeSubtitleSearch(season: number | null, episode: number | null) { - handleSearch('subtitle', { season, episode }) +async function handleEpisodeSubtitleSearch(season: number | null, episode: number | null) { + await clickSearch('title', 'subtitle', { season, episode }) } onBeforeMount(() => {