From 4d30ea840fc7d4b97ac1ae3949c4bfebf49ba85a Mon Sep 17 00:00:00 2001 From: SBCrumb Date: Fri, 26 Sep 2025 14:14:40 -0400 Subject: [PATCH] fix: Add Sonarr direct lookup fallback for reliable series detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The /series/lookup endpoint sometimes fails to find series that exist in Sonarr. Added fallback to series_by_imdb_direct() method which scans all series directly. Changes: - Try Sonarr lookup endpoint first (fast) - Fall back to direct series scan if lookup fails (slower but more reliable) - Apply same logic to both episode dates and metadata methods - Version bump to 2.0.5-sonarr-direct-lookup This should find High Potential, Breaking Bad, and other series that exist in Sonarr but weren't found via the lookup endpoint. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- VERSION | 2 +- processors/tv_series_processor.py | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/VERSION b/VERSION index bf337ce..90648db 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.4-fallback-fix +2.0.5-sonarr-direct-lookup diff --git a/processors/tv_series_processor.py b/processors/tv_series_processor.py index facb061..18110f3 100644 --- a/processors/tv_series_processor.py +++ b/processors/tv_series_processor.py @@ -187,13 +187,18 @@ class TVSeriesProcessor: return aired, dateadded, source try: - # Find series in Sonarr + # Find series in Sonarr using lookup endpoint first series = self.sonarr.series_by_imdb(imdb_id) if not series: - _log("WARNING", f"Series not found in Sonarr for IMDb: {imdb_id}") - # Don't return here - fall through to external API fallback - pass - else: + _log("WARNING", f"Series not found via Sonarr lookup for IMDb: {imdb_id}") + # Try direct method as fallback (slower but more reliable) + _log("DEBUG", f"Trying direct series search for IMDb: {imdb_id}") + series = self.sonarr.series_by_imdb_direct(imdb_id) + if not series: + _log("WARNING", f"Series not found via direct search either for IMDb: {imdb_id}") + # Fall through to external API fallback + + if series: # Get episodes for series episodes = self.sonarr.episodes_for_series(series["id"]) target_episode = None @@ -248,6 +253,10 @@ class TVSeriesProcessor: try: series = self.sonarr.series_by_imdb(imdb_id) + if not series: + # Try direct method as fallback + series = self.sonarr.series_by_imdb_direct(imdb_id) + if series: episodes = self.sonarr.episodes_for_series(series["id"]) for episode in episodes: