diff --git a/api/routes.py b/api/routes.py index 9dd2cb3..fe9fe77 100644 --- a/api/routes.py +++ b/api/routes.py @@ -2261,6 +2261,36 @@ async def lookup_episode(imdb_id: str, season: int, episode: int, dependencies: else: dateadded_str = str(dateadded) + # AUTO-FIX: Update NFO file with missing dateadded element + try: + nfo_manager = dependencies.get("nfo_manager") + if nfo_manager and result.get('video_path'): + video_path = result['video_path'] + print(f"DEBUG: Auto-fixing NFO for episode {imdb_id} S{season:02d}E{episode:02d} at {video_path}") + + # Create NFO with dateadded element + from pathlib import Path + video_file = Path(video_path) + if video_file.exists(): + # Use NFO manager to update the episode NFO file + nfo_manager.create_episode_nfo( + video_file.parent, + season, + episode, + imdb_id, + dateadded, + result.get('air_date'), + source=f"NFOGuard auto-fix via Emby lookup - {result.get('source', 'database')}" + ) + print(f"SUCCESS: Auto-fixed NFO file for {imdb_id} S{season:02d}E{episode:02d}") + else: + print(f"WARNING: Video file not found for auto-fix: {video_path}") + else: + print(f"DEBUG: Auto-fix skipped - nfo_manager: {nfo_manager is not None}, video_path: {result.get('video_path', 'None')}") + except Exception as fix_error: + print(f"WARNING: Auto-fix failed for {imdb_id} S{season:02d}E{episode:02d}: {fix_error}") + # Don't fail the lookup if auto-fix fails + return { "found": True, "imdb_id": imdb_id, @@ -2268,7 +2298,8 @@ async def lookup_episode(imdb_id: str, season: int, episode: int, dependencies: "episode": episode, "dateadded": dateadded_str, "source": result.get('source', 'database'), - "air_date": result.get('air_date') if result.get('air_date') else None + "air_date": result.get('air_date') if result.get('air_date') else None, + "auto_fixed": True # Indicate that we attempted auto-fix } else: # Not found in database @@ -2316,12 +2347,41 @@ async def lookup_movie(imdb_id: str, dependencies: dict): else: dateadded_str = str(dateadded) + # AUTO-FIX: Update NFO file with missing dateadded element + try: + nfo_manager = dependencies.get("nfo_manager") + if nfo_manager and result.get('video_path'): + video_path = result['video_path'] + print(f"DEBUG: Auto-fixing NFO for movie {imdb_id} at {video_path}") + + # Create NFO with dateadded element + from pathlib import Path + video_file = Path(video_path) + if video_file.exists(): + # Use NFO manager to update the movie NFO file + nfo_manager.create_movie_nfo( + video_file.parent, + imdb_id, + dateadded, + result.get('released'), + source=f"NFOGuard auto-fix via Emby lookup - {result.get('source', 'database')}" + ) + print(f"SUCCESS: Auto-fixed NFO file for movie {imdb_id}") + else: + print(f"WARNING: Video file not found for auto-fix: {video_path}") + else: + print(f"DEBUG: Auto-fix skipped - nfo_manager: {nfo_manager is not None}, video_path: {result.get('video_path', 'None')}") + except Exception as fix_error: + print(f"WARNING: Auto-fix failed for movie {imdb_id}: {fix_error}") + # Don't fail the lookup if auto-fix fails + return { "found": True, "imdb_id": imdb_id, "dateadded": dateadded_str, "source": result.get('source', 'database'), - "released": result.get('released') if result.get('released') else None + "released": result.get('released') if result.get('released') else None, + "auto_fixed": True # Indicate that we attempted auto-fix } else: # Not found in database