Compare commits

...

1 Commits

Author SHA1 Message Date
fallenbagel
69bb84e2da fix(sonarr): use configured metadata provider for season filtering
The Sonarr scanner always filtered seasons against TMDB data, ignoring the configured metadata
provider setting. This caused shows with different season structures between TMDB and TVDB (e.g.
Animaniacs) to be incorrectly marked as fully available, preventing users from requesting missing
seasons.

fix #2466
2026-02-20 01:42:13 +08:00

View File

@@ -1,6 +1,12 @@
import { getMetadataProvider } from '@server/api/metadata';
import type { SonarrSeries } from '@server/api/servarr/sonarr'; import type { SonarrSeries } from '@server/api/servarr/sonarr';
import SonarrAPI from '@server/api/servarr/sonarr'; import SonarrAPI from '@server/api/servarr/sonarr';
import type { TmdbTvDetails } from '@server/api/themoviedb/interfaces'; import TheMovieDb from '@server/api/themoviedb';
import { ANIME_KEYWORD_ID } from '@server/api/themoviedb/constants';
import type {
TmdbKeyword,
TmdbTvDetails,
} from '@server/api/themoviedb/interfaces';
import { getRepository } from '@server/datasource'; import { getRepository } from '@server/datasource';
import Media from '@server/entity/Media'; import Media from '@server/entity/Media';
import type { import type {
@@ -102,6 +108,15 @@ class SonarrScanner
} }
const tmdbId = tvShow.id; const tmdbId = tvShow.id;
const metadataProvider = tvShow.keywords?.results?.some(
(keyword: TmdbKeyword) => keyword.id === ANIME_KEYWORD_ID
)
? await getMetadataProvider('anime')
: await getMetadataProvider('tv');
if (!(metadataProvider instanceof TheMovieDb)) {
tvShow = await metadataProvider.getTvShow({ tvId: tmdbId });
}
const settings = getSettings(); const settings = getSettings();
const filteredSeasons = sonarrSeries.seasons.filter( const filteredSeasons = sonarrSeries.seasons.filter(