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.
Added debug logging to understand why rich existing NFO metadata
isn't being preserved when NFOGuard updates files.
This will show:
- Parameters passed to create_movie_nfo
- Whether existing premiered dates are being preserved
- Why NFOGuard fields aren't being added to the bottom
This should help diagnose why Inside Out 2 NFO isn't getting
NFOGuard's dateadded and lockdata fields appended.
Added debug logs to understand why Flow (2019) isn't calling external APIs
while Ambush (2023) works correctly. This will show:
- should_query calculation and reasoning
- _decide_movie_dates entry point and logic path
- Whether existing database data is being used incorrectly
This should help identify why digital release date lookup works for some
movies but not others with identical database states.
The system was skipping external API calls when a database entry existed
but had no useful data (dateadded: None). This caused movies to get minimal
NFO files even when digital release dates were available.
Added condition to should_query logic: also query APIs when we have an
existing database entry but no dateadded value.
This fixes the Flow (2019) issue where it should fetch digital release
dates from TMDB/OMDB but was returning "no_valid_date_source" instead.
Updated main workflow to create version-gitea tagged images
(e.g. 1.7.0-gitea) alongside the standard latest tag.
This provides clear identification that the image came from
the Gitea build system and includes the version number for
easy tracking.
Main branch images will now be available as:
- sbcrumb/nfoguard:latest (standard)
- sbcrumb/nfoguard:1.7.0-gitea (versioned Gitea build)
- Bump version to 1.7.0 for NFO release date fix
- Add version-dev-gitea tag format (e.g. 1.7.0-dev-gitea)
- Push version tag to Gitea registry alongside dev tag
- Update build output to show clear pull command
This makes it easy to identify which dev build you're running
and ensures you get the latest Gitea dev build with the NFO fixes.
Updated both main and dev workflows to use sbcrumb/nfoguard instead of
jskala/NFOguard for repository cloning and Docker registry paths.
This fixes the build failures where workflows were trying to clone from
the old repository location that no longer exists.
Changes:
- Updated git clone URLs in both ci.yml and ci-dev.yml
- Fixed Docker registry paths for image tagging and pushing
- Updated cache image manifest checking paths
When Radarr can't provide import/download dates, the system now properly
uses digital release dates, theatrical dates, or air dates as the dateadded
value for both NFO files and database storage.
This fixes the issue where movies would get minimal NFO content with
"no_valid_date_source" when valid release dates were available but not
being saved to the database for future use.
Key changes:
- Use release date as dateadded when import date is None but release date exists
- Ensure all found dates are saved to database for future manual scans
- Maintain proper source tracking for debugging
- Fix NFO files getting minimal content when valid dates exist
- Emphasize .local/ must NEVER be committed to GitHub
- Document security breach procedures if .local/ exposed publicly
- Reinforce that .local/ contains sensitive development information
- Add warning about privacy violations and Claude attribution details
- Restore .local/ directory with all development documentation
- Files include SUMMARY.md, commit.md, workflow.md, and setup templates
- These files stay local and in Gitea only (excluded from GitHub)
- Add .local/ to .gitignore to exclude from GitHub releases
- .local/ contains private development documentation and notes
- Files remain available locally and in Gitea for development reference
MAJOR IMPROVEMENTS:
• Enhanced movie detection for directories without IMDb IDs in folder names
• Fixed NFO processing to execute before date validation (preserves existing metadata)
• Added smart episode NFO migration to standardized S##E## format
• Resolved database save issues with proper upsert operations for dateadded values
• Implemented comprehensive IMDb ID detection from filenames and NFO content
TECHNICAL CHANGES:
• nfoguard.py:1008-1025 - Fixed early exit logic to process NFOs regardless of date availability
• core/nfo_manager.py - Added find_existing_episode_nfo() and enhanced episode processing
• core/database.py - Fixed upsert operations to properly save dateadded values
• Enhanced find_movie_imdb_id() to detect IMDb IDs from multiple sources
CORE FIXES:
• Movie NFO processing now happens before date validation checks
• Episode NFOs with long names automatically migrated to S##E## format
• Database operations properly handle both new entries and updates
• Movies without IMDb in directory names now detected via filenames/NFO content
• All existing metadata preserved during NFO standardization
RESULTS:
✅ Existing movie.nfo files receive full NFOGuard processing
✅ Episode NFOs standardized to proper S##E## naming convention
✅ Database persistence works correctly for all date scenarios
✅ Enhanced movie detection covers edge cases
✅ Maintained backward compatibility with existing configurations
Commit Message:
fix: NFO processing overhaul - comprehensive metadata management
MAJOR IMPROVEMENTS:
• Enhanced movie detection for directories without IMDb IDs in folder names
• Fixed NFO processing to execute before date validation (preserves existing metadata)
• Added smart episode NFO migration to standardized S##E## format
• Resolved database save issues with proper upsert operations for dateadded values
• Implemented comprehensive IMDb ID detection from filenames and NFO content
TECHNICAL CHANGES:
• nfoguard.py:1008-1025 - Fixed early exit logic to process NFOs regardless of date availability
• core/nfo_manager.py - Added find_existing_episode_nfo() and enhanced episode processing
• core/database.py - Fixed upsert operations to properly save dateadded values
• Enhanced find_movie_imdb_id() to detect IMDb IDs from multiple sources
CORE FIXES:
• Movie NFO processing now happens before date validation checks
• Episode NFOs with long names automatically migrated to S##E## format
• Database operations properly handle both new entries and updates
• Movies without IMDb in directory names now detected via filenames/NFO content
• All existing metadata preserved during NFO standardization
RESULTS:
✅ Existing movie.nfo files receive full NFOGuard processing
✅ Episode NFOs standardized to proper S##E## naming convention
✅ Database persistence works correctly for all date scenarios
✅ Enhanced movie detection covers edge cases
✅ Maintained backward compatibility with existing configurations
* fix: NFO processing overhaul - looking GOOD!
Listen up, buddy! Your boy Cat just made this NFO processing
smoother than my pompadour on a good hair day!
WHAT'S THE DEAL?
• Movie NFOs were getting DISSED when dates went missing
• Episode NFOs with long names were cluttering up the joint
• Nobody wants a messy media library - that's just WRONG!
WHAT I FIXED (because I'm THAT good):
• Movies: NFO processing now happens FIRST, baby! No more
skipping when dates are wonky - we standardize EVERYTHING!
• TV Shows: Long episode NFO names? GONE! We migrate that
metadata to proper S##E## format and trash the old junk
• Dates get moved to the bottom where they belong (it's all
about the STYLE!)
• NFOGuard signatures added to everything (gotta sign your work!)
FILES TOUCHED:
• nfoguard.py:1008-1025 - Fixed that early exit nonsense
• core/nfo_manager.py - Added find_existing_episode_nfo() function
• core/nfo_manager.py - Enhanced create_episode_nfo() with migration
RESULTS:
✨ Existing movie.nfo files get the full treatment
✨ Long episode NFO names become sleek S##E## format
✨ All metadata preserved (we're not ANIMALS!)
✨ Dates organized properly at the bottom
✨ NFOGuard branding on everything
This code is now looking SO good, it should be in GQ!
What's not to like about perfection?
* testing: Testing database date adds for old files
* database debuging
* fixing database calls as well as ID for imdb
* fix: dirs with no imdb in title
movies with no imdb getting skipped
* update: fix core parsing