diff --git a/VERSION b/VERSION index 9e69e54..bf337ce 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.3-external-fallback +2.0.4-fallback-fix diff --git a/processors/tv_series_processor.py b/processors/tv_series_processor.py index a068244..facb061 100644 --- a/processors/tv_series_processor.py +++ b/processors/tv_series_processor.py @@ -191,41 +191,42 @@ class TVSeriesProcessor: series = self.sonarr.series_by_imdb(imdb_id) if not series: _log("WARNING", f"Series not found in Sonarr for IMDb: {imdb_id}") - return aired, dateadded, source - - # Get episodes for series - episodes = self.sonarr.episodes_for_series(series["id"]) - target_episode = None - - for episode in episodes: - if (episode.get("seasonNumber") == season_num and - episode.get("episodeNumber") == episode_num): - target_episode = episode - break - - if not target_episode: - _log("WARNING", f"Episode S{season_num:02d}E{episode_num:02d} not found in Sonarr") - return aired, dateadded, source - - # Get airdate - aired = target_episode.get("airDateUtc") - - # Try to get import history - episode_id = target_episode.get("id") - if episode_id: - import_date = self.sonarr.get_episode_import_history(episode_id) - if import_date: - dateadded = convert_utc_to_local(import_date) - source = "sonarr:history.import" - _log("INFO", f"Found import date for S{season_num:02d}E{episode_num:02d}: {dateadded}") - return aired, dateadded, source - - # Fallback to airdate if no import history - if aired: - dateadded = convert_utc_to_local(aired) - source = "sonarr:episode.airDateUtc" - _log("WARNING", f"No import history for S{season_num:02d}E{episode_num:02d}, using airdate: {dateadded}") - return aired, dateadded, source + # Don't return here - fall through to external API fallback + pass + else: + # Get episodes for series + episodes = self.sonarr.episodes_for_series(series["id"]) + target_episode = None + + for episode in episodes: + if (episode.get("seasonNumber") == season_num and + episode.get("episodeNumber") == episode_num): + target_episode = episode + break + + if not target_episode: + _log("WARNING", f"Episode S{season_num:02d}E{episode_num:02d} not found in Sonarr") + # Don't return here - fall through to external API fallback + else: + # Get airdate + aired = target_episode.get("airDateUtc") + + # Try to get import history + episode_id = target_episode.get("id") + if episode_id: + import_date = self.sonarr.get_episode_import_history(episode_id) + if import_date: + dateadded = convert_utc_to_local(import_date) + source = "sonarr:history.import" + _log("INFO", f"Found import date for S{season_num:02d}E{episode_num:02d}: {dateadded}") + return aired, dateadded, source + + # Fallback to airdate if no import history + if aired: + dateadded = convert_utc_to_local(aired) + source = "sonarr:episode.airDateUtc" + _log("WARNING", f"No import history for S{season_num:02d}E{episode_num:02d}, using airdate: {dateadded}") + return aired, dateadded, source except Exception as e: _log("ERROR", f"Sonarr API error for S{season_num:02d}E{episode_num:02d}: {e}") @@ -317,13 +318,21 @@ class TVSeriesProcessor: return None, "no_external_data" def _create_series_nfos(self, series_path: Path, imdb_id: str): - """Create tvshow.nfo and season.nfo files""" - # Create tvshow.nfo - self.nfo_manager.create_tvshow_nfo(series_path, imdb_id) + """Create tvshow.nfo and season.nfo files only if they don't exist""" + # Create tvshow.nfo only if it doesn't exist + tvshow_nfo = series_path / "tvshow.nfo" + if not tvshow_nfo.exists(): + self.nfo_manager.create_tvshow_nfo(series_path, imdb_id) + else: + _log("DEBUG", f"Skipping tvshow.nfo creation - already exists: {tvshow_nfo}") - # Create season.nfo for each season directory + # Create season.nfo for each season directory only if they don't exist for season_dir in series_path.iterdir(): if season_dir.is_dir() and self._is_season_directory(season_dir.name): season_num = self._extract_season_number(season_dir.name) if season_num is not None: - self.nfo_manager.create_season_nfo(season_dir, season_num) \ No newline at end of file + season_nfo = season_dir / "season.nfo" + if not season_nfo.exists(): + self.nfo_manager.create_season_nfo(season_dir, season_num) + else: + _log("DEBUG", f"Skipping season.nfo creation - already exists: {season_nfo}") \ No newline at end of file