Merge pull request 'sonarr-date' (#30) from sonarr-date into dev
Local Docker Build (Dev) / build-dev (push) Successful in 24s

Reviewed-on: #30
This commit was merged in pull request #30.
This commit is contained in:
2025-10-05 10:43:34 -04:00
2 changed files with 27 additions and 7 deletions
+1 -1
View File
@@ -1 +1 @@
2.0.7 2.0.9
+26 -6
View File
@@ -120,7 +120,8 @@ class TVProcessor:
aired = sonarr_data.get('airDate') aired = sonarr_data.get('airDate')
dateadded = sonarr_data.get('dateAdded') dateadded = sonarr_data.get('dateAdded')
if dateadded: if dateadded:
source = "sonarr" # Use more specific source to indicate this came from Sonarr import history
source = "sonarr:history.import"
# Fallback to external sources if needed # Fallback to external sources if needed
if not aired: if not aired:
@@ -130,8 +131,9 @@ class TVProcessor:
if not dateadded: if not dateadded:
source = "external" source = "external"
# Use air date as fallback for dateadded if available # ONLY use air date as fallback for dateadded if we have no Sonarr import date at all
if not dateadded and aired: # and if we couldn't get any import information from Sonarr history
if not dateadded and aired and source != "sonarr:history.import":
dateadded = aired dateadded = aired
source = f"{source}_fallback" if source != "unknown" else "aired_fallback" source = f"{source}_fallback" if source != "unknown" else "aired_fallback"
@@ -140,7 +142,7 @@ class TVProcessor:
return episode_dates return episode_dates
def _get_sonarr_episodes(self, imdb_id: str) -> Dict[Tuple[int, int], Dict[str, Any]]: def _get_sonarr_episodes(self, imdb_id: str) -> Dict[Tuple[int, int], Dict[str, Any]]:
"""Get episode information from Sonarr""" """Get episode information from Sonarr including import history"""
try: try:
series_data = self.sonarr.series_by_imdb(imdb_id) series_data = self.sonarr.series_by_imdb(imdb_id)
if not series_data: if not series_data:
@@ -158,11 +160,29 @@ class TVProcessor:
episode_num = episode.get('episodeNumber', 0) episode_num = episode.get('episodeNumber', 0)
if season > 0 and episode_num > 0: if season > 0 and episode_num > 0:
episode_map[(season, episode_num)] = { # Get basic episode info
episode_data = {
'airDate': episode.get('airDate'), 'airDate': episode.get('airDate'),
'dateAdded': episode.get('episodeFile', {}).get('dateAdded') if episode.get('hasFile') else None 'dateAdded': None
} }
# First try to get import date from history (more accurate)
episode_id = episode.get('id')
if episode_id and episode.get('hasFile'):
import_date = self.sonarr.get_episode_import_history(episode_id)
if import_date:
episode_data['dateAdded'] = import_date
_log("DEBUG", f"Got import date from history for S{season:02d}E{episode_num:02d}: {import_date}")
# Fallback to episodeFile.dateAdded if history didn't work
if not episode_data['dateAdded'] and episode.get('hasFile'):
file_date = episode.get('episodeFile', {}).get('dateAdded')
if file_date:
episode_data['dateAdded'] = file_date
_log("DEBUG", f"Got file date for S{season:02d}E{episode_num:02d}: {file_date}")
episode_map[(season, episode_num)] = episode_data
return episode_map return episode_map
except Exception as e: except Exception as e: