fix: Ensure NFOGuard fields are appended at bottom of NFO files
Local Docker Build (Dev) / build-dev (push) Successful in 24s

Changed from ET.SubElement() to ET.Element() + explicit append() to
guarantee that NFOGuard-managed fields appear at the very bottom of
NFO files after all existing content.

This is critical because:
- Emby plugin specifically looks for dateadded field
- All NFOGuard fields should be grouped together at the bottom
- Preserves existing rich metadata while clearly marking our additions

Added debug logging for dateadded field to confirm it's being written.
This commit is contained in:
2025-09-24 10:06:29 -04:00
parent 17914ff8f4
commit fc3c190c1b
+14 -8
View File
@@ -183,36 +183,42 @@ class NFOManager:
# Create new NFO structure # Create new NFO structure
movie = ET.Element("movie") movie = ET.Element("movie")
# Now append ALL NFOGuard and date fields at the VERY END of the file # Now append ALL NFOGuard fields at the VERY END of the file
# This ensures they appear after all existing content including actors # Create elements and explicitly append them to ensure they're at the bottom
# Add IMDb uniqueid at the end (after all existing content) # Add IMDb uniqueid at the end (after all existing content)
uniqueid = ET.SubElement(movie, "uniqueid", type="imdb", default="true") uniqueid = ET.Element("uniqueid", type="imdb", default="true")
uniqueid.text = imdb_id uniqueid.text = imdb_id
movie.append(uniqueid)
# Add premiered date at the bottom if we have it # Add premiered date at the bottom if we have it
if released: if released:
premiered_elem = ET.SubElement(movie, "premiered") premiered_elem = ET.Element("premiered")
premiered_elem.text = released[:10] if len(released) >= 10 else released premiered_elem.text = released[:10] if len(released) >= 10 else released
movie.append(premiered_elem)
# Extract year from premiered date for consistency # Extract year from premiered date for consistency
try: try:
year_value = released[:4] if len(released) >= 4 else None year_value = released[:4] if len(released) >= 4 else None
if year_value and year_value.isdigit(): if year_value and year_value.isdigit():
year_elem = ET.SubElement(movie, "year") year_elem = ET.Element("year")
year_elem.text = year_value year_elem.text = year_value
movie.append(year_elem)
except: except:
pass # Skip year if we can't extract it pass # Skip year if we can't extract it
# Add dateadded at the end # Add dateadded at the end - THIS IS CRITICAL FOR EMBY PLUGIN
if dateadded: if dateadded:
dateadded_elem = ET.SubElement(movie, "dateadded") dateadded_elem = ET.Element("dateadded")
dateadded_elem.text = dateadded dateadded_elem.text = dateadded
movie.append(dateadded_elem)
print(f"✅ Added dateadded to NFO: {dateadded}")
# Add lockdata at the very end # Add lockdata at the very end
if lock_metadata: if lock_metadata:
lockdata = ET.SubElement(movie, "lockdata") lockdata = ET.Element("lockdata")
lockdata.text = "true" lockdata.text = "true"
movie.append(lockdata)
# Add NFOGuard comment at the beginning # Add NFOGuard comment at the beginning
comment_text = f" Created by {self.manager_brand} - Source: {source} " comment_text = f" Created by {self.manager_brand} - Source: {source} "