feat: Add comprehensive IMDb detection for TV shows
Local Docker Build (Dev) / build-dev (pull_request) Successful in 4s
Local Docker Build (Dev) / build-dev (pull_request) Successful in 4s
- Add find_series_imdb_id method to check directory, filenames, and tvshow.nfo - Add TV show batch validation in webhook batcher (like movies) - Ensures TV webhooks process correct series by validating IMDb match - Prevents mismatched processing like Girls (2012) -> Gachiakuta (2025) - Comprehensive detection checks: folder name, file names, NFO content
This commit is contained in:
@@ -126,6 +126,37 @@ class NFOManager:
|
||||
print(f"❌ No IMDb or TMDB ID found in directory, filenames, or NFO for: {movie_dir.name}")
|
||||
return None
|
||||
|
||||
def find_series_imdb_id(self, series_dir: Path) -> Optional[str]:
|
||||
"""Find IMDb ID from TV series directory name, filenames, or tvshow.nfo file"""
|
||||
print(f"🔍 Searching for IMDb ID in TV series: {series_dir.name}")
|
||||
|
||||
# First try directory name
|
||||
imdb_id = self.parse_imdb_from_path(series_dir)
|
||||
if imdb_id:
|
||||
print(f"✅ Found IMDb ID in series directory name: {imdb_id}")
|
||||
return imdb_id
|
||||
|
||||
# Try all files in the directory for IMDb ID patterns
|
||||
for file_path in series_dir.iterdir():
|
||||
if file_path.is_file():
|
||||
imdb_id = self.parse_imdb_from_path(file_path)
|
||||
if imdb_id:
|
||||
print(f"✅ Found IMDb ID in series filename: {imdb_id} from {file_path.name}")
|
||||
return imdb_id
|
||||
|
||||
# Finally, try tvshow.nfo file content
|
||||
nfo_path = series_dir / "tvshow.nfo"
|
||||
imdb_id = self.parse_imdb_from_nfo(nfo_path)
|
||||
if imdb_id:
|
||||
if imdb_id.startswith("tmdb-"):
|
||||
print(f"✅ Found TMDB ID in tvshow.nfo: {imdb_id} from {nfo_path} (fallback mode)")
|
||||
else:
|
||||
print(f"✅ Found IMDb ID in tvshow.nfo: {imdb_id} from {nfo_path}")
|
||||
return imdb_id
|
||||
|
||||
print(f"❌ No IMDb or TMDB ID found in series directory, filenames, or tvshow.nfo for: {series_dir.name}")
|
||||
return None
|
||||
|
||||
def extract_nfoguard_dates_from_nfo(self, nfo_path: Path) -> Optional[Dict[str, str]]:
|
||||
"""Extract NFOGuard-managed dates from existing NFO file"""
|
||||
if not nfo_path.exists():
|
||||
|
||||
Reference in New Issue
Block a user