fix: NFO timestamp consistency and enhanced episode processing debug
NFO Management Timestamp Fix: - Fix NFO management comments to use local timezone instead of UTC - Both movie and TV episode NFO files now show consistent local timezone - Comments now show: <!-- managed by NFOGuard at 2025-09-14T09:29:06-04:00 --> Enhanced Episode Processing Debug: - Add comprehensive debug logging for webhook episode database lookups - Track IMDb ID and season/episode info throughout processing pipeline - Add database write verification to catch storage issues immediately - Enhanced logging will help identify duplicate processing root causes This addresses the issue where episodes were being treated as new downloads instead of finding existing database entries, helping prevent duplicate processing.
This commit is contained in:
+20
-4
@@ -755,7 +755,7 @@ class TVProcessor:
|
||||
self.process_series(series_path)
|
||||
return
|
||||
|
||||
_log("INFO", f"Processing {len(webhook_episodes)} webhook episodes for: {series_path.name}")
|
||||
_log("INFO", f"Processing {len(webhook_episodes)} webhook episodes for: {series_path.name} (IMDb: {imdb_id})")
|
||||
|
||||
# Update database
|
||||
self.db.upsert_series(imdb_id, str(series_path))
|
||||
@@ -791,6 +791,7 @@ class TVProcessor:
|
||||
continue
|
||||
|
||||
# Get episode date information - webhook processing prioritizes existing DB entries
|
||||
_log("DEBUG", f"Processing webhook episode: IMDb={imdb_id}, S{season_num:02d}E{episode_num:02d}")
|
||||
aired, dateadded, source = self._get_webhook_episode_date(imdb_id, season_num, episode_num, series_metadata)
|
||||
enhanced_metadata = self._get_episode_metadata(series_metadata, season_num, episode_num) if series_metadata else None
|
||||
|
||||
@@ -809,6 +810,14 @@ class TVProcessor:
|
||||
|
||||
# Save to database
|
||||
self.db.upsert_episode_date(imdb_id, season_num, episode_num, aired, dateadded, source, True)
|
||||
|
||||
# Verify database entry was saved (debug)
|
||||
verification = self.db.get_episode_date(imdb_id, season_num, episode_num)
|
||||
if verification:
|
||||
_log("DEBUG", f"Verified database entry saved: S{season_num:02d}E{episode_num:02d} -> {verification['dateadded']}")
|
||||
else:
|
||||
_log("ERROR", f"Failed to save episode to database: S{season_num:02d}E{episode_num:02d}")
|
||||
|
||||
episodes_processed += 1
|
||||
|
||||
# Create season/tvshow NFOs if any episodes were processed
|
||||
@@ -836,10 +845,17 @@ class TVProcessor:
|
||||
3. Get aired date from Sonarr/TMDB for reference
|
||||
"""
|
||||
# Step 1: Check if we already have this episode in our database
|
||||
_log("DEBUG", f"Checking database for existing episode: IMDb={imdb_id}, S{season_num:02d}E{episode_num:02d}")
|
||||
existing = self.db.get_episode_date(imdb_id, season_num, episode_num)
|
||||
if existing and existing.get("dateadded"):
|
||||
_log("INFO", f"Using existing database entry for S{season_num:02d}E{episode_num:02d}: {existing['dateadded']}")
|
||||
return existing.get("aired"), existing["dateadded"], existing.get("source", "database:existing")
|
||||
if existing:
|
||||
_log("DEBUG", f"Found database entry: {existing}")
|
||||
if existing.get("dateadded"):
|
||||
_log("INFO", f"Using existing database entry for S{season_num:02d}E{episode_num:02d}: {existing['dateadded']} (source: {existing.get('source', 'unknown')})")
|
||||
return existing.get("aired"), existing["dateadded"], existing.get("source", "database:existing")
|
||||
else:
|
||||
_log("DEBUG", f"Database entry found but no dateadded value: {existing}")
|
||||
else:
|
||||
_log("DEBUG", f"No database entry found for IMDb={imdb_id}, S{season_num:02d}E{episode_num:02d}")
|
||||
|
||||
# Step 2: This is a new download (webhook triggered) - use current time in local timezone
|
||||
local_tz = _get_local_timezone()
|
||||
|
||||
Reference in New Issue
Block a user