diff --git a/core/nfo_manager.py b/core/nfo_manager.py
index 9010b0c..473c771 100644
--- a/core/nfo_manager.py
+++ b/core/nfo_manager.py
@@ -249,12 +249,64 @@ class NFOManager:
print(f"✅ Found NFOGuard data in NFO: dateadded={result.get('dateadded', 'None')}, source={source}, released={result.get('released', 'None')}, aired={result.get('aired', 'None')}")
return result
- except (ET.ParseError, Exception) as e:
- print(f"⚠️ Error parsing NFO for NFOGuard data: {e}")
+ except ET.ParseError as e:
+ # Handle malformed XML files gracefully (common with external NFO files)
+ print(f"🔍 NFO XML parse error (will try text fallback): {nfo_path.name}")
+ # Try text-based fallback for extracting NFOGuard data
+ return self._extract_nfoguard_data_text_fallback(nfo_path)
+ except Exception as e:
+ print(f"⚠️ Unexpected error reading NFO file {nfo_path.name}: {e}")
pass
return None
+ def _extract_nfoguard_data_text_fallback(self, nfo_path: Path) -> Optional[Dict[str, str]]:
+ """Text-based fallback for extracting NFOGuard data from malformed XML files"""
+ try:
+ content = nfo_path.read_text(encoding='utf-8', errors='ignore')
+
+ # Look for NFOGuard elements using regex
+ import re
+
+ # Check for lockdata=true first (NFOGuard marker)
+ if not re.search(r'