From c19d0f6290d69e0294753b036c1dd972d3d64db9 Mon Sep 17 00:00:00 2001 From: SBCrumb Date: Fri, 26 Sep 2025 14:56:01 -0400 Subject: [PATCH] update --- processors/tv_series_processor.py | 70 +++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/processors/tv_series_processor.py b/processors/tv_series_processor.py index fb67991..07ceedc 100644 --- a/processors/tv_series_processor.py +++ b/processors/tv_series_processor.py @@ -98,30 +98,54 @@ class TVSeriesProcessor: """Find all episodes on disk, grouped by (season, episode)""" episodes = {} - _log("DEBUG", f"Scanning for season directories in: {series_path}") - for season_dir in series_path.iterdir(): - _log("DEBUG", f"Checking directory: {season_dir.name} (is_dir: {season_dir.is_dir()})") - if season_dir.is_dir() and self._is_season_directory(season_dir.name): - season_num = self._extract_season_number(season_dir.name) - _log("DEBUG", f"Found season directory: {season_dir.name} → season {season_num}") - if season_num is None: - continue + try: + _log("DEBUG", f"Scanning for season directories in: {series_path}") + _log("DEBUG", f"Series path exists: {series_path.exists()}, is_dir: {series_path.is_dir()}") + + if not series_path.exists() or not series_path.is_dir(): + _log("ERROR", f"Series path does not exist or is not a directory: {series_path}") + return episodes + + # List all items in directory for debugging + try: + items = list(series_path.iterdir()) + _log("DEBUG", f"Found {len(items)} items in series directory") + for item in items: + _log("DEBUG", f" Item: {item.name} (is_dir: {item.is_dir()})") + except Exception as e: + _log("ERROR", f"Failed to list directory contents: {e}") + return episodes + + for season_dir in series_path.iterdir(): + _log("DEBUG", f"Checking directory: {season_dir.name} (is_dir: {season_dir.is_dir()})") + _log("DEBUG", f"Season directory regex test for '{season_dir.name}': {self._is_season_directory(season_dir.name)}") - # Find video files in this season - season_episodes = self.episode_nfo_manager.find_video_files_for_season(season_dir) - _log("DEBUG", f"Found {len(season_episodes)} episodes in {season_dir.name}: {list(season_episodes.keys())}") - - # Add season directory info to episodes - for (s_num, e_num), video_files in season_episodes.items(): - _log("DEBUG", f"Episode S{s_num:02d}E{e_num:02d}: season_dir={season_num}, filename_season={s_num}") - if s_num == season_num: # Verify season matches directory - episodes[(s_num, e_num)] = video_files - _log("DEBUG", f"Added episode S{s_num:02d}E{e_num:02d} to processing list") - else: - _log("WARNING", f"Season mismatch: directory={season_num}, filename={s_num} for S{s_num:02d}E{e_num:02d}") - - _log("DEBUG", f"Total episodes found on disk: {len(episodes)}") - return episodes + if season_dir.is_dir() and self._is_season_directory(season_dir.name): + season_num = self._extract_season_number(season_dir.name) + _log("DEBUG", f"Found season directory: {season_dir.name} → season {season_num}") + if season_num is None: + _log("WARNING", f"Could not extract season number from: {season_dir.name}") + continue + + # Find video files in this season + season_episodes = self.episode_nfo_manager.find_video_files_for_season(season_dir) + _log("DEBUG", f"Found {len(season_episodes)} episodes in {season_dir.name}: {list(season_episodes.keys())}") + + # Add season directory info to episodes + for (s_num, e_num), video_files in season_episodes.items(): + _log("DEBUG", f"Episode S{s_num:02d}E{e_num:02d}: season_dir={season_num}, filename_season={s_num}") + if s_num == season_num: # Verify season matches directory + episodes[(s_num, e_num)] = video_files + _log("DEBUG", f"Added episode S{s_num:02d}E{e_num:02d} to processing list") + else: + _log("WARNING", f"Season mismatch: directory={season_num}, filename={s_num} for S{s_num:02d}E{e_num:02d}") + + _log("DEBUG", f"Total episodes found on disk: {len(episodes)}") + return episodes + + except Exception as e: + _log("ERROR", f"Exception in _find_episodes_on_disk: {e}") + return episodes def _extract_season_number(self, dirname: str) -> Optional[int]: """Extract season number from directory name"""