feat: improve NFO file organization by moving NFOGuard elements to bottom

NFO Organization Enhancement:
- Move all NFOGuard elements (dateadded, lockdata, comments) to bottom of NFO files
- Remove existing NFOGuard elements and re-add at bottom for clean organization
- Provides better separation between media metadata and NFOGuard management
- Easier to read NFO files when Radarr/Sonarr has already populated extensive metadata

Before: NFOGuard elements mixed throughout existing metadata
After: All media metadata first, then NFOGuard elements grouped at bottom

This addresses user feedback about NFO readability when files already contain
extensive metadata from Radarr, making it easier to see both media info and
NFOGuard management details in a logical order.
This commit is contained in:
2025-09-14 11:21:44 -04:00
parent df5785e8ad
commit 5b7d4cdbd0
3 changed files with 55 additions and 6 deletions
+16 -4
View File
@@ -182,18 +182,30 @@ class NFOManager:
self._ensure_child_text(root, "premiered", release_date, overwrite=False)
self._ensure_child_text(root, "year", release_date.split("-")[0], overwrite=False)
# Add NFOGuard elements at the bottom for better organization
self._strip_existing_footer_comments(root)
# Remove existing NFOGuard elements to re-add them at bottom
for elem in root.findall(".//dateadded"):
root.remove(elem)
for elem in root.findall(".//lockdata"):
root.remove(elem)
# Add NFOGuard elements at bottom
if dateadded:
if dateadded == "MANUAL_REVIEW_NEEDED":
self._ensure_child_text(root, "dateadded", "MANUAL_REVIEW_NEEDED", overwrite=True)
dateadded_elem = ET.SubElement(root, "dateadded")
dateadded_elem.text = "MANUAL_REVIEW_NEEDED"
_log("WARNING", f"Set MANUAL_REVIEW_NEEDED marker in NFO: {movie_dir}/movie.nfo")
else:
self._ensure_child_text(root, "dateadded", dateadded, overwrite=True)
dateadded_elem = ET.SubElement(root, "dateadded")
dateadded_elem.text = dateadded
if lock_metadata:
self._ensure_child_text(root, "lockdata", "true", overwrite=True)
lockdata_elem = ET.SubElement(root, "lockdata")
lockdata_elem.text = "true"
# Add footer comments with timestamp
self._strip_existing_footer_comments(root)
local_tz = _get_local_timezone()
current_time = datetime.now(local_tz).isoformat(timespec="seconds")
root.append(ET.Comment(f" source: Movie; {source_detail} "))