From a87914abc667625ce836c73c60c0d6d6d240b63b Mon Sep 17 00:00:00 2001 From: fallenbagel <98979876+Fallenbagel@users.noreply.github.com> Date: Fri, 20 Feb 2026 01:42:13 +0800 Subject: [PATCH] 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 --- server/lib/scanners/sonarr/index.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/server/lib/scanners/sonarr/index.ts b/server/lib/scanners/sonarr/index.ts index 7a6e95c0..3c39519d 100644 --- a/server/lib/scanners/sonarr/index.ts +++ b/server/lib/scanners/sonarr/index.ts @@ -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(