# NFOGuard Development Summary ## Current Status: v1.3.6 - NFO Preservation Fix ### Latest Updates (v1.3.6) - **๐Ÿ”ง NFO MANAGER**: Fixed movie.nfo to preserve existing content instead of overwriting - **โœ… PRESERVATION**: Existing movie metadata (title, plot, actors, etc.) now maintained - **๐ŸŽฏ TARGETED**: Only updates NFOGuard-managed fields (dateadded, uniqueid, lockdata) - **๐Ÿงน CLEANUP**: Removes old NFOGuard elements before adding new ones to avoid duplicates ### NFO Management Behavior (Fixed) **Before (v1.3.5 and earlier):** ```xml โ†“ NFOGuard processing ``` **After (v1.3.6):** ```xml โ†“ NFOGuard processing Existing Title Existing Plot 2025-09-14T13:37:14-04:00 true ```lopment Summary ## Current Status: v1.3.3 - Database Migration & Path Validation Complete ### Latest Updates (v1.3.3) - **๏ฟฝ DATABASE**: Fixed missing `path` column migration in movies table - **โœ… MIGRATION**: Automatic schema updates with graceful error handling - **๐Ÿ” VALIDATION**: Enhanced database migration with column existence checks - **๐ŸŽฏ COMPATIBILITY**: Backward compatibility with existing databases maintained ### Path Mapping Success (v1.3.2-v1.3.3) - **๐Ÿ› CRITICAL**: Fixed substring matching bug (movies/movies6, tv/tv6) - **๐ŸŽฏ ALGORITHM**: Longest-path-first matching prevents incorrect mappings - **๏ฟฝ DEBUG**: Comprehensive debug logging for troubleshooting - **โœ… TESTED**: Annabelle webhook now processes correctly ### Working Path Mapping Example ``` Radarr webhook: /mnt/unionfs/Media/Movies/movies6/Annabelle... โœ… Sort by length: [movies6, movies] (longest first) โœ… Match movies6: /mnt/unionfs/Media/Movies/movies6 โœ… Map to index 1: /media/Movies/movies6 โœ… Result: /media/Movies/movies6/Annabelle (2014) [tt3322940] โœ… Path exists: Validation passes โœ… Processing: Movie webhook succeeds ``` ### Environment Configuration Required - `MOVIE_PATHS=/media/Movies/movies,/media/Movies/movies6` - `TV_PATHS=/media/TV/tv,/media/TV/tv6` - `RADARR_ROOT_FOLDERS=/mnt/unionfs/Media/Movies/movies,/mnt/unionfs/Media/Movies/movies6` - `SONARR_ROOT_FOLDERS=/mnt/unionfs/Media/TV/tv,/mnt/unionfs/Media/TV/tv6` ### Previous Updates (v1.3.1) - **๐Ÿ› FIXED**: 'container_path' undefined variable error in Radarr webhook handler - **๐Ÿ”ง ENHANCED**: Webhook now properly handles both 'folderPath' and 'path' fields - **โœ… VALIDATION**: Added mandatory path validation before processing - **๐ŸŽฏ BATCH**: Enhanced batch processing with IMDb ID validation to prevent cross-processing ### Zero Hardcoded Paths - โœ… No default fallback paths in configuration - โœ… Application fails with clear error if paths not configured - โœ… Works with any folder structure - โœ… Completely portable between environments ### Database Migration Support - โœ… Automatic schema updates for existing databases - โœ… Graceful handling of missing columns - โœ… Backward compatibility maintained ### Webhook Processing Flow 1. **Reception**: Webhook received and parsed 2. **Path Resolution**: External path mapped to container path using environment mappings 3. **Validation**: Verify mapped path exists and IMDb ID matches 4. **Batching**: Add to processing queue with anti-storm protection 5. **Processing**: Date resolution, NFO creation, file timestamp updates 6. **Database**: Record processing history and results ### Technical Architecture - **Path Mapper**: Environment-configurable path translation - **NFO Manager**: Creates metadata files with proper date attribution - **Database Manager**: SQLite with automatic migration support - **Webhook Batcher**: Intelligent batching with validation - **Client Managers**: API access for external services ### Debug Features - **Path Mapping Debug**: Detailed logging of path translation process - **Health Endpoint**: Database and external service status - **Statistics API**: Comprehensive media library statistics - **Debug Endpoints**: Movie import analysis, TMDB lookup testing ## Configuration Requirements ### Critical Environment Variables ```bash # Required - Application will fail without these MOVIE_PATHS=/your/container/movie/paths TV_PATHS=/your/container/tv/paths RADARR_ROOT_FOLDERS=/host/radarr/paths SONARR_ROOT_FOLDERS=/host/sonarr/paths # Database and logging DB_PATH=/app/data/media_dates.db LOG_DIR=/app/data/logs ``` ### Known Issues - Path mapping must exactly match your container and host configurations - Database requires migration for existing installations - Debug logging may be verbose during path mapping troubleshooting