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
This commit is contained in:
fallenbagel
2026-02-20 01:42:13 +08:00
committed by Fallenbagel
parent fa905be002
commit a87914abc6

View File

@@ -1,6 +1,12 @@
import { getMetadataProvider } from '@server/api/metadata';
import type { SonarrSeries } 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 Media from '@server/entity/Media';
import type {
@@ -102,6 +108,15 @@ class SonarrScanner
}
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 filteredSeasons = sonarrSeries.seasons.filter(