dev #18
@@ -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)
|
||||
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}")
|
||||
Reference in New Issue
Block a user