debug for movies missing .nfo

This commit is contained in:
2025-10-26 15:56:57 -04:00
parent ed3d7e903c
commit f31430256e
+20 -2
View File
@@ -2418,7 +2418,7 @@ def register_routes(app, dependencies: dict):
print(f"📊 Found {len(missing_tv_nfo_files)} TV NFO files missing dateadded elements") print(f"📊 Found {len(missing_tv_nfo_files)} TV NFO files missing dateadded elements")
# Convert TV file paths to episode information with direct NFO parsing # Convert TV file paths to episode information with direct NFO parsing
def extract_imdb_from_nfo_content(nfo_file, is_episode=True): def extract_imdb_from_nfo_content(nfo_file, is_episode=True, verbose_logging=True):
"""Extract IMDb ID directly from NFO file content - we already know the file exists""" """Extract IMDb ID directly from NFO file content - we already know the file exists"""
imdb_id = "unknown" imdb_id = "unknown"
@@ -2432,6 +2432,7 @@ def register_routes(app, dependencies: dict):
if imdb_elem is not None and imdb_elem.text: if imdb_elem is not None and imdb_elem.text:
imdb_text = imdb_elem.text.strip() imdb_text = imdb_elem.text.strip()
if imdb_text.startswith('tt'): if imdb_text.startswith('tt'):
if verbose_logging:
print(f"✅ Found IMDb {imdb_text} in <imdb> tag: {os.path.basename(nfo_file)}") print(f"✅ Found IMDb {imdb_text} in <imdb> tag: {os.path.basename(nfo_file)}")
return imdb_text return imdb_text
@@ -2440,6 +2441,7 @@ def register_routes(app, dependencies: dict):
if uniqueid.get("type") == "imdb" and uniqueid.text: if uniqueid.get("type") == "imdb" and uniqueid.text:
imdb_text = uniqueid.text.strip() imdb_text = uniqueid.text.strip()
if imdb_text.startswith('tt'): if imdb_text.startswith('tt'):
if verbose_logging:
print(f"✅ Found IMDb {imdb_text} in <uniqueid type='imdb'>: {os.path.basename(nfo_file)}") print(f"✅ Found IMDb {imdb_text} in <uniqueid type='imdb'>: {os.path.basename(nfo_file)}")
return imdb_text return imdb_text
@@ -2448,11 +2450,13 @@ def register_routes(app, dependencies: dict):
content_match = re.search(r'(tt\d{7,})', nfo_content) content_match = re.search(r'(tt\d{7,})', nfo_content)
if content_match: if content_match:
imdb_text = content_match.group(1) imdb_text = content_match.group(1)
if verbose_logging:
print(f"✅ Found IMDb {imdb_text} in NFO content: {os.path.basename(nfo_file)}") print(f"✅ Found IMDb {imdb_text} in NFO content: {os.path.basename(nfo_file)}")
return imdb_text return imdb_text
except ET.ParseError as e: except ET.ParseError as e:
# Handle malformed XML by trying text-based search # Handle malformed XML by trying text-based search
if verbose_logging:
print(f"⚠️ NFO XML parse error in {os.path.basename(nfo_file)}: {e}") print(f"⚠️ NFO XML parse error in {os.path.basename(nfo_file)}: {e}")
try: try:
# Fallback: Read as text and search for IMDb patterns # Fallback: Read as text and search for IMDb patterns
@@ -2463,12 +2467,15 @@ def register_routes(app, dependencies: dict):
text_match = re.search(r'(tt\d{7,})', nfo_text) text_match = re.search(r'(tt\d{7,})', nfo_text)
if text_match: if text_match:
imdb_text = text_match.group(1) imdb_text = text_match.group(1)
if verbose_logging:
print(f"✅ Found IMDb {imdb_text} in NFO text content: {os.path.basename(nfo_file)}") print(f"✅ Found IMDb {imdb_text} in NFO text content: {os.path.basename(nfo_file)}")
return imdb_text return imdb_text
except Exception as text_error: except Exception as text_error:
if verbose_logging:
print(f"⚠️ Error reading NFO as text {nfo_file}: {text_error}") print(f"⚠️ Error reading NFO as text {nfo_file}: {text_error}")
except Exception as e: except Exception as e:
if verbose_logging:
print(f"⚠️ Unexpected error parsing NFO {nfo_file}: {e}") print(f"⚠️ Unexpected error parsing NFO {nfo_file}: {e}")
# Method 4: Fallback - check folder structure # Method 4: Fallback - check folder structure
@@ -2477,6 +2484,7 @@ def register_routes(app, dependencies: dict):
folder_name = os.path.basename(series_folder) folder_name = os.path.basename(series_folder)
folder_match = re.search(r'\[imdb-(tt\d+)\]', folder_name, re.IGNORECASE) folder_match = re.search(r'\[imdb-(tt\d+)\]', folder_name, re.IGNORECASE)
if folder_match: if folder_match:
if verbose_logging:
print(f"✅ Found IMDb {folder_match.group(1)} in folder: {folder_name}") print(f"✅ Found IMDb {folder_match.group(1)} in folder: {folder_name}")
return folder_match.group(1) return folder_match.group(1)
else: else:
@@ -2485,9 +2493,11 @@ def register_routes(app, dependencies: dict):
folder_name = os.path.basename(movie_folder) folder_name = os.path.basename(movie_folder)
folder_match = re.search(r'\[imdb-(tt\d+)\]', folder_name, re.IGNORECASE) folder_match = re.search(r'\[imdb-(tt\d+)\]', folder_name, re.IGNORECASE)
if folder_match: if folder_match:
if verbose_logging:
print(f"✅ Found IMDb {folder_match.group(1)} in folder: {folder_name}") print(f"✅ Found IMDb {folder_match.group(1)} in folder: {folder_name}")
return folder_match.group(1) return folder_match.group(1)
if verbose_logging:
print(f"❌ No IMDb ID found in {os.path.basename(nfo_file)}") print(f"❌ No IMDb ID found in {os.path.basename(nfo_file)}")
return "unknown" return "unknown"
@@ -2600,11 +2610,19 @@ def register_routes(app, dependencies: dict):
movie_folder_name = os.path.basename(movie_dir) movie_folder_name = os.path.basename(movie_dir)
# Extract IMDb ID from NFO content # Extract IMDb ID from NFO content
imdb_id = extract_imdb_from_nfo_content(nfo_file, is_episode=False) imdb_id = extract_imdb_from_nfo_content(nfo_file, is_episode=False, verbose_logging=False)
# Clean movie title (remove year and imdb parts) # Clean movie title (remove year and imdb parts)
clean_movie_title = re.sub(r'\s*\(\d{4}\)\s*\[imdb-[^]]+\]', '', movie_folder_name).strip() clean_movie_title = re.sub(r'\s*\(\d{4}\)\s*\[imdb-[^]]+\]', '', movie_folder_name).strip()
# Log detailed movie information
if imdb_id != "unknown":
print(f"✅ Found IMDb {imdb_id} for movie: {clean_movie_title} ({movie_folder_name})")
else:
print(f"❌ No IMDb ID found for movie: {clean_movie_title} ({movie_folder_name})")
print(f" 📁 Path: {movie_dir}")
print(f" 📄 NFO: {os.path.basename(nfo_file)}")
missing_items["movies"].append({ missing_items["movies"].append({
"imdb_id": imdb_id, "imdb_id": imdb_id,
"title": clean_movie_title, "title": clean_movie_title,