@@ -98,30 +98,54 @@ class TVSeriesProcessor:
|
|||||||
"""Find all episodes on disk, grouped by (season, episode)"""
|
"""Find all episodes on disk, grouped by (season, episode)"""
|
||||||
episodes = {}
|
episodes = {}
|
||||||
|
|
||||||
_log("DEBUG", f"Scanning for season directories in: {series_path}")
|
try:
|
||||||
for season_dir in series_path.iterdir():
|
_log("DEBUG", f"Scanning for season directories in: {series_path}")
|
||||||
_log("DEBUG", f"Checking directory: {season_dir.name} (is_dir: {season_dir.is_dir()})")
|
_log("DEBUG", f"Series path exists: {series_path.exists()}, is_dir: {series_path.is_dir()}")
|
||||||
if season_dir.is_dir() and self._is_season_directory(season_dir.name):
|
|
||||||
season_num = self._extract_season_number(season_dir.name)
|
if not series_path.exists() or not series_path.is_dir():
|
||||||
_log("DEBUG", f"Found season directory: {season_dir.name} → season {season_num}")
|
_log("ERROR", f"Series path does not exist or is not a directory: {series_path}")
|
||||||
if season_num is None:
|
return episodes
|
||||||
continue
|
|
||||||
|
# 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
|
if season_dir.is_dir() and self._is_season_directory(season_dir.name):
|
||||||
season_episodes = self.episode_nfo_manager.find_video_files_for_season(season_dir)
|
season_num = self._extract_season_number(season_dir.name)
|
||||||
_log("DEBUG", f"Found {len(season_episodes)} episodes in {season_dir.name}: {list(season_episodes.keys())}")
|
_log("DEBUG", f"Found season directory: {season_dir.name} → season {season_num}")
|
||||||
|
if season_num is None:
|
||||||
# Add season directory info to episodes
|
_log("WARNING", f"Could not extract season number from: {season_dir.name}")
|
||||||
for (s_num, e_num), video_files in season_episodes.items():
|
continue
|
||||||
_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
|
# Find video files in this season
|
||||||
episodes[(s_num, e_num)] = video_files
|
season_episodes = self.episode_nfo_manager.find_video_files_for_season(season_dir)
|
||||||
_log("DEBUG", f"Added episode S{s_num:02d}E{e_num:02d} to processing list")
|
_log("DEBUG", f"Found {len(season_episodes)} episodes in {season_dir.name}: {list(season_episodes.keys())}")
|
||||||
else:
|
|
||||||
_log("WARNING", f"Season mismatch: directory={season_num}, filename={s_num} for S{s_num:02d}E{e_num:02d}")
|
# Add season directory info to episodes
|
||||||
|
for (s_num, e_num), video_files in season_episodes.items():
|
||||||
_log("DEBUG", f"Total episodes found on disk: {len(episodes)}")
|
_log("DEBUG", f"Episode S{s_num:02d}E{e_num:02d}: season_dir={season_num}, filename_season={s_num}")
|
||||||
return episodes
|
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]:
|
def _extract_season_number(self, dirname: str) -> Optional[int]:
|
||||||
"""Extract season number from directory name"""
|
"""Extract season number from directory name"""
|
||||||
|
|||||||
Reference in New Issue
Block a user