- {displaySeason === 0 ? '特别篇' : `第 ${displaySeason} 季`}
+ {seasonLabel(displaySeason)}
{visibleEpisodes.map((ep) => {
@@ -107,7 +111,20 @@ export function LibrarySeriesEpisodes({
-
+
+ {isAdmin && onManualScrape && isTheatricalFeature(ep) && (
+
+ )}
+
+
)
})}
@@ -117,6 +134,12 @@ export function LibrarySeriesEpisodes({
)
}
+function seasonLabel(season: number): string {
+ if (season === 0) return '特别篇'
+ if (season === THEATRICAL_SEASON) return '剧场版'
+ return `第 ${season} 季`
+}
+
function episodeDisplayTitle(ep: Media, siblings: Media[]): string {
let mainTitle = ''
const epTitle = ep.episode_title?.trim()
diff --git a/web/src/pages/useLibrarySeriesSelection.ts b/web/src/pages/useLibrarySeriesSelection.ts
index d59e705..c2dc7e7 100644
--- a/web/src/pages/useLibrarySeriesSelection.ts
+++ b/web/src/pages/useLibrarySeriesSelection.ts
@@ -1,7 +1,7 @@
import { useEffect, useMemo } from 'react'
import type { Media } from '../types'
-import { getSeriesKey, type SeriesCard } from '../utils/groupSeries'
+import { getSeriesKey, isTheatricalFeature, THEATRICAL_SEASON, type SeriesCard } from '../utils/groupSeries'
type SeasonEpisodes = {
season: number
@@ -47,7 +47,9 @@ export function useLibrarySeriesSelection({
: sourceItems.filter((m) => getSeriesKey(m) === selectedSeries.key)
const seasons = new Map