Commit Graph
100 Commits
Author SHA1 Message Date
sbcrumb 5cc7281f06 bump: Version 2.0.13 for rename webhook debug logging
Local Docker Build (Dev) / build-dev (pull_request) Successful in 3s
2025-10-10 10:30:31 -04:00
sbcrumb 6e15d79b8f debug: Add comprehensive logging for rename webhook episodeFile analysis 2025-10-10 10:29:15 -04:00
sbcrumb f98fa9626c Merge pull request 'sonarr-all' (#32) from sonarr-all into dev
Local Docker Build (Dev) / build-dev (push) Successful in 3s
Reviewed-on: #32
2025-10-09 18:13:06 -04:00
sbcrumb 3787ca2d23 Fix all Sonarr webhooks: Force targeted processing for single episodes
Local Docker Build (Dev) / build-dev (pull_request) Successful in 3s
- Extend episodeFile extraction to ALL webhook types (Download, Rename, Upgrade)
- Force targeted mode when episodes_data has ≤3 episodes to prevent full series processing
- Add debug logging to track episode extraction and processing mode decisions
- Prevents processing 177 episodes when only 1-3 episodes are involved
- Applies to imports, renames, and upgrades - not just renames
- Version bump to 2.0.12

This ensures that single episode operations (most common) only process the specific
episode(s) involved instead of scanning the entire series.
2025-10-09 18:11:47 -04:00
sbcrumb e897656396 Fix TV rename webhooks: Implement targeted episode processing
- Extract episode info from episodeFile when webhook.episodes is empty for rename events
- Create proper episode data structure for process_webhook_episodes method
- Prevents full series processing (177 episodes) for single episode renames
- Dramatically improves performance for rename operations
- Version bump to 2.0.11

Resolves issue where rename webhooks were falling back to full series processing instead of targeted mode.
2025-10-09 18:10:11 -04:00
sbcrumb 84322d91d0 Merge pull request 'Fix TV webhook processing: Add missing process_webhook_episodes method' (#31) from tv-webhook into dev
Local Docker Build (Dev) / build-dev (push) Successful in 4s
Reviewed-on: #31
2025-10-09 18:04:19 -04:00
sbcrumb ed78a81a8e Fix TV webhook processing: Add missing process_webhook_episodes method
- Add process_webhook_episodes method to TVProcessor class for targeted episode processing
- Implement helper methods: _parse_episode_from_filename, _get_sonarr_series_metadata, _get_episode_metadata, _extract_title_from_filename, _get_webhook_episode_date
- Enables webhook-based episode processing with title extraction and metadata handling
- Resolves 'TVProcessor' object has no attribute 'process_webhook_episodes' error
- Version bump to 2.0.10
2025-10-09 18:04:19 -04:00
sbcrumb 7ff2de6e66 Merge pull request 'sonarr-date' (#30) from sonarr-date into dev
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Reviewed-on: #30
2025-10-05 10:43:34 -04:00
sbcrumb 5ade28c118 fix: Only fallback to airdate when Sonarr has no import date
Local Docker Build (Dev) / build-dev (pull_request) Successful in 23s
- Modified fallback logic to only use airdate as dateadded when source is NOT 'sonarr:history.import'
- This prevents using airdate fallback when Sonarr has valid import dates available
- Ensures Sonarr import dates are prioritized over airdate fallbacks
- Addresses issue where episodes with valid Sonarr import dates were still falling back to airdates
2025-10-05 10:42:35 -04:00
sbcrumb 191e6f5f3f fix: Use Sonarr import history for TV episode date detection
- Modified _get_sonarr_episodes to call get_episode_import_history() for each episode
- This retrieves actual import dates from Sonarr's history API instead of just episodeFile.dateAdded
- Added fallback to episodeFile.dateAdded if history lookup fails
- Updated source tracking to use 'sonarr:history.import' for better debugging
- Added debug logging to show which method found the import date
- Should resolve issue where episodes fall back to aired dates despite valid Sonarr imports
2025-10-05 10:29:13 -04:00
sbcrumb 0dafcd64b2 Merge code-remove branch with TV processing fixes
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Resolves TV series processing errors by fixing method calls and adding missing functionality:
- Fixed SonarrClient method names (series_by_imdb, episodes_for_series)
- Added missing get_episode_air_date method to ExternalClientManager
- Merged into dev branch at version 2.0.7
2025-10-04 11:43:37 -04:00
sbcrumb 0980ba0761 Fix TV processing issues: correct method names and add missing episode air date method
Local Docker Build (Dev) / build-dev (pull_request) Successful in 24s
- Fix SonarrClient method call from get_series_by_imdb to series_by_imdb
- Fix SonarrClient method call from get_episodes to episodes_for_series
- Add missing get_episode_air_date method to ExternalClientManager
- Method uses TMDB and OMDb APIs to fetch episode air dates
- Version bump to 2.0.7
2025-10-04 11:41:35 -04:00
sbcrumb 251f84edbe Merge pull request 'code-remove' (#28) from code-remove into dev
Local Docker Build (Dev) / build-dev (push) Successful in 41s
Reviewed-on: #28
2025-10-04 11:13:47 -04:00
sbcrumb 816982c0eb Add missing psutil dependency to complete requirements
- Add psutil==5.9.6 for monitoring metrics functionality
- Container confirmed: manage_nfo=True (NFO creation enabled)
- All external dependencies now included in requirements.txt
- Version bump to 2.0.6 for complete dependency resolution
2025-10-04 11:13:47 -04:00
sbcrumb 7670a16ca3 Resolve conflicts: keep complete dependencies and version 2.0.6
Local Docker Build (Dev) / build-dev (pull_request) Successful in 26s
2025-10-04 11:13:30 -04:00
sbcrumb acf741e6bb Add missing psutil dependency to complete requirements
Local Docker Build (Dev) / build-dev (pull_request) Successful in 34s
- Add psutil==5.9.6 for monitoring metrics functionality
- Container confirmed: manage_nfo=True (NFO creation enabled)
- All external dependencies now included in requirements.txt
- Version bump to 2.0.6 for complete dependency resolution
2025-10-04 11:12:23 -04:00
sbcrumb 05ce62fc0e Merge pull request 'Add missing aiohttp dependency to requirements.txt' (#27) from code-remove into dev
Local Docker Build (Dev) / build-dev (push) Successful in 1m5s
Reviewed-on: #27
2025-10-04 11:09:37 -04:00
sbcrumb 01e96038ff Add missing aiohttp dependency to requirements.txt
- Add aiohttp==3.8.6 to fix ModuleNotFoundError in runtime_validator
- Container now shows config: manage_nfo=True (confirms NFO creation enabled)
- Version bump to 2.0.5
2025-10-04 11:09:37 -04:00
sbcrumb 17aec56952 Add missing aiohttp dependency to requirements.txt
Local Docker Build (Dev) / build-dev (pull_request) Successful in 24s
- Add aiohttp==3.8.6 to fix ModuleNotFoundError in runtime_validator
- Container now shows config: manage_nfo=True (confirms NFO creation enabled)
- Version bump to 2.0.5
2025-10-04 11:08:58 -04:00
sbcrumb fc3cb50913 Merge pull request 'code-remove' (#26) from code-remove into dev
Local Docker Build (Dev) / build-dev (push) Successful in 29s
Reviewed-on: #26
2025-10-04 11:07:42 -04:00
sbcrumb 64791cb830 Resolve VERSION conflict: keep 2.0.4 for import fixes
Local Docker Build (Dev) / build-dev (pull_request) Successful in 23s
2025-10-04 11:07:14 -04:00
sbcrumb d0e4182d38 Fix missing Tuple import in async_nfo_manager.py
Local Docker Build (Dev) / build-dev (pull_request) Successful in 24s
- Add Tuple to typing imports to resolve NameError
- Fixes container startup failure after modular refactoring
- Version bump to 2.0.4
2025-10-04 11:06:07 -04:00
sbcrumb 22b78782eb Merge pull request 'code-remove' (#25) from code-remove into dev
Local Docker Build (Dev) / build-dev (push) Successful in 20s
Reviewed-on: #25
2025-10-04 11:04:48 -04:00
sbcrumb 8552fcfa87 Fix Docker entrypoint to use modular main.py instead of monolithic nfoguard.py
- Update Dockerfile to exec main.py instead of deleted nfoguard.py
- Fixes container startup failure after monolithic code removal
- Version bump to 2.0.3 for Docker compatibility fix
2025-10-04 11:04:48 -04:00
sbcrumb 08ff77760b Resolve VERSION conflict: keep 2.0.3 for Docker fixes
Local Docker Build (Dev) / build-dev (pull_request) Successful in 23s
2025-10-04 11:04:27 -04:00
sbcrumb 4c2ebae4dc Fix Docker entrypoint to use modular main.py instead of monolithic nfoguard.py
Local Docker Build (Dev) / build-dev (pull_request) Successful in 24s
- Update Dockerfile to exec main.py instead of deleted nfoguard.py
- Fixes container startup failure after monolithic code removal
- Version bump to 2.0.3 for Docker compatibility fix
2025-10-04 11:01:56 -04:00
sbcrumb 95ddc607f4 Merge pull request 'Remove monolithic nfoguard.py and add comprehensive debug logging' (#24) from code-remove into dev
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Reviewed-on: #24
2025-10-04 11:00:21 -04:00
sbcrumb 72614af928 Remove monolithic nfoguard.py and add comprehensive debug logging
- Remove 2467-line monolithic nfoguard.py file to prevent confusion
- Add debug prints to identify why NFO metadata isn't being added
- Track config.manage_nfo values and function calls
- Debug dateadded parameter passing through all tiers
- Update version to 2.0.2
- This will help identify if manage_nfo is disabled or function not called
2025-10-04 11:00:21 -04:00
sbcrumb 863019f42a Remove monolithic nfoguard.py and add comprehensive debug logging
Local Docker Build (Dev) / build-dev (pull_request) Successful in 24s
- Remove 2467-line monolithic nfoguard.py file to prevent confusion
- Add debug prints to identify why NFO metadata isn't being added
- Track config.manage_nfo values and function calls
- Debug dateadded parameter passing through all tiers
- This will help identify if manage_nfo is disabled or function not called

🤖 Generated with [Claude Code](https://claude.ai/code)
2025-10-04 10:57:50 -04:00
sbcrumb b06fd3f752 Merge pull request 'fix: webhook again' (#23) from webhook-again into dev
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Reviewed-on: #23
2025-10-02 16:38:19 -04:00
sbcrumb 6c5ca59ed4 fix: webhook again
Local Docker Build (Dev) / build-dev (pull_request) Successful in 19s
2025-10-02 16:37:39 -04:00
sbcrumb e7c29ddec4 Merge pull request 'fix: fixing webhook processing' (#22) from webhook-fix into dev
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Reviewed-on: #22
2025-10-02 16:33:20 -04:00
sbcrumb 9f86b02665 fix: fixing webhook processing
Local Docker Build (Dev) / build-dev (pull_request) Successful in 19s
2025-10-02 16:31:07 -04:00
sbcrumb 72bfcd9eed Merge pull request 'feat: metrics' (#21) from metrics into dev
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Reviewed-on: #21
2025-09-29 09:23:48 -04:00
sbcrumb ba0eed0daf feat: metrics 2025-09-29 09:23:48 -04:00
sbcrumb 8b130deec6 Merge pull request 'feat: add config validation' (#20) from improvments into dev
Local Docker Build (Dev) / build-dev (push) Successful in 9s
Reviewed-on: #20
2025-09-29 08:59:47 -04:00
sbcrumb 7e1dd50ea0 feat: add config validation 2025-09-29 08:59:47 -04:00
sbcrumb 241d671d85 Merge branch 'main' into dev
Local Docker Build (Dev) / build-dev (push) Successful in 23s
Local Docker Build (Main) / build (pull_request) Successful in 29s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
Local Docker Build (Main) / build (push) Successful in 25s
Local Docker Build (Main) / deploy (push) Successful in 0s
2025-09-29 08:55:03 -04:00
sbcrumb 7ae8ce0024 dev (#18)
Local Docker Build (Main) / build (push) Successful in 23s
Local Docker Build (Main) / deploy (push) Successful in 0s
Reviewed-on: #18
2025-09-27 17:52:46 -04:00
sbcrumb 820c5472c3 Merge pull request 'feat: implement comprehensive async I/O capabilities' (#17) from async into dev
Local Docker Build (Dev) / build-dev (push) Successful in 14s
Local Docker Build (Main) / build (pull_request) Successful in 28s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
Reviewed-on: #17
2025-09-27 13:19:54 -04:00
sbcrumb 82eb29fd63 feat: implement comprehensive async I/O capabilities
Local Docker Build (Dev) / build-dev (pull_request) Successful in 20s
- Add utils/async_file_utils.py with aiofiles-based operations
- Create core/async_nfo_manager.py for concurrent NFO processing
- Add async methods to TVProcessor for concurrent episode handling
- Implement async_find_episodes_on_disk() for faster scanning
- Add async_batch_create_episode_nfos() for concurrent NFO creation
- Support async_process_multiple_series() for parallel processing
- Optimize I/O performance for large media libraries
- Enable controlled concurrency with semaphores and rate limiting

Performance improvements:
- Concurrent file operations reduce I/O wait times
- Batch processing minimizes individual file access overhead
- Configurable concurrency limits prevent system overload
- Async directory scanning for faster episode discovery
2025-09-27 13:17:54 -04:00
sbcrumb 09612aeb4e version: Update to 2.0.0 for major architecture and code quality improvements
Local Docker Build (Dev) / build-dev (push) Successful in 17s
- Bump version to 2.0.0 to reflect major changes
- Represents completion of modular architecture transformation
- Includes comprehensive code quality improvements (Phase 3)
- All new utility modules and error handling systems
- Breaking changes: modular structure, new import paths
2025-09-27 13:09:46 -04:00
sbcrumb 6d840753a5 Merge branch 'improvements' into dev
Local Docker Build (Dev) / build-dev (push) Successful in 29s
2025-09-27 13:07:47 -04:00
sbcrumb 1a544dcba3 fix: restore .gitea directory and CI workflows
Local Docker Build (Dev) / build-dev (push) Successful in 29s
- Restore .gitea/workflows/ci.yml for main branch builds
- Restore .gitea/workflows/ci-dev.yml for dev branch builds
- Ensures Gitea CI pipeline will function properly
- Fixes issue where .gitea directory was accidentally removed
2025-09-27 13:05:41 -04:00
sbcrumb fa1e4e2ec7 improvements (#15)
Build & Push DEV to DockerHub / docker (push) Failing after 1m12s
Reviewed-on: #15
2025-09-27 13:00:08 -04:00
sbcrumb cab1a27144 chore: ensure .gitea directory is tracked and protected
Local Docker Build (Dev) / build-dev (pull_request) Successful in 29s
- Remove .gitea/ from .git/info/exclude to allow tracking
- Add .gitea/workflows/ CI configuration files to repository
- Prevents accidental deletion of Gitea-specific CI workflows
- Ensures consistent build pipeline across repository instances
2025-09-27 12:59:15 -04:00
sbcrumb d7426281de feature: more omprovments phase 3
Build & Push DEV to DockerHub / docker (pull_request) Failing after 33s
2025-09-27 12:53:20 -04:00
sbcrumb 03d9db9364 update gitignore 2025-09-27 12:47:34 -04:00
sbcrumb d14e2ef3cc refactor: split up from mono app to more modular design 2025-09-27 12:44:29 -04:00
sbcrumb 8da7853cca chore: untrack Gitea-only directories for GitHub sync protection
Build & Publish to DockerHub (from VERSION + Release) / docker (push) Failing after 2m22s
Release Drafter / update_release_draft (push) Failing after 5s
2025-09-27 11:42:39 -04:00
sbcrumb 2e7922dc8b dev to main (#14)
Local Docker Build (Main) / build (push) Successful in 20s
Local Docker Build (Main) / deploy (push) Successful in 0s
Reviewed-on: #14
Co-authored-by: SBCrumb <[email protected]>
Co-committed-by: SBCrumb <[email protected]>
2025-09-27 11:19:36 -04:00
sbcrumb ce1a599fd9 stop tvshow.nfo and show.nfo
Local Docker Build (Dev) / build-dev (push) Successful in 28s
Local Docker Build (Main) / build (pull_request) Successful in 24s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
2025-09-26 17:07:12 -04:00
sbcrumb 3826895275 title search
Local Docker Build (Dev) / build-dev (push) Successful in 28s
2025-09-26 16:59:12 -04:00
sbcrumb d2ad048f61 tv update again
Local Docker Build (Dev) / build-dev (push) Successful in 28s
2025-09-26 16:49:57 -04:00
sbcrumb 7027ae2745 update to nfoguard.py
Local Docker Build (Dev) / build-dev (push) Successful in 24s
2025-09-26 16:42:35 -04:00
sbcrumb 3d7460ad76 verixon update
Local Docker Build (Dev) / build-dev (push) Successful in 33s
2025-09-26 16:25:08 -04:00
sbcrumb 806370bd5f airdate fallback
Local Docker Build (Dev) / build-dev (push) Successful in 29s
2025-09-26 15:56:40 -04:00
sbcrumb fc80c08041 tuple update
Local Docker Build (Dev) / build-dev (push) Successful in 23s
2025-09-26 15:21:45 -04:00
sbcrumb 2c4dd274ff retry for the AI
Local Docker Build (Dev) / build-dev (push) Successful in 16s
2025-09-26 15:19:37 -04:00
sbcrumb c19d0f6290 update
Local Docker Build (Dev) / build-dev (push) Successful in 28s
2025-09-26 14:56:01 -04:00
sbcrumbandClaude b9e3ae3a5e debug: Add extensive logging for episode detection
Local Docker Build (Dev) / build-dev (push) Successful in 29s
Added detailed debug logging to diagnose why High Potential shows "0 episodes" despite having video files:

- Log season directory detection and pattern matching
- Log video file scanning and episode filename parsing
- Log season number extraction and matching logic
- Log final episode count and processing decisions

This will help identify where the episode detection is failing in the pipeline.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-26 14:37:41 -04:00
sbcrumbandClaude 4d30ea840f fix: Add Sonarr direct lookup fallback for reliable series detection
Local Docker Build (Dev) / build-dev (push) Successful in 19s
The /series/lookup endpoint sometimes fails to find series that exist in Sonarr. Added fallback to series_by_imdb_direct() method which scans all series directly.

Changes:
- Try Sonarr lookup endpoint first (fast)
- Fall back to direct series scan if lookup fails (slower but more reliable)
- Apply same logic to both episode dates and metadata methods
- Version bump to 2.0.5-sonarr-direct-lookup

This should find High Potential, Breaking Bad, and other series that exist in Sonarr but weren't found via the lookup endpoint.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-26 14:14:40 -04:00
sbcrumbandClaude 27677e49f8 fix: External API fallback flow and conditional NFO creation
Local Docker Build (Dev) / build-dev (push) Successful in 23s
Fixed two critical issues:
1. External API fallback was never reached because early returns when series/episodes not found in Sonarr
2. tvshow.nfo and season.nfo were always created even if they already existed

Changes:
- Restructured Sonarr lookup to fall through to external APIs when series/episodes not found
- Made tvshow.nfo and season.nfo creation conditional (only if files don't exist)
- Added debug logging for skipped NFO creation
- Version bump to 2.0.4-fallback-fix

Now series like High Potential should properly fall back to TMDB/OMDb for episode airdates.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-26 14:12:18 -04:00
sbcrumbandClaude 2e6d8a35e7 feat: Add external API fallback for TV episode airdates
Local Docker Build (Dev) / build-dev (push) Successful in 19s
When Sonarr lookup fails to find a series or episode data, the system now falls back to external APIs (TMDB, OMDb) to get episode air dates. This ensures episodes still get proper dateadded values even when not found in Sonarr.

Changes:
- Add ExternalClientManager integration to TVSeriesProcessor
- Implement _get_episode_airdate_from_external_apis method
- Support TMDB TV episode lookups with IMDb->TMDB ID conversion
- Support OMDb episode season lookups with date parsing
- Version bump to 2.0.3-external-fallback

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-26 13:56:57 -04:00
sbcrumb 12767d7350 fix: Remove invalid webhook_secret parameter from SonarrClient
Local Docker Build (Dev) / build-dev (push) Successful in 23s
SonarrClient constructor only accepts base_url and api_key parameters.
Version bump to 2.0.2-clean
2025-09-26 13:47:11 -04:00
sbcrumb 4411804725 fix: Sonarr client initialization error
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Fix AttributeError for missing sonarr_url config attributes.
Use environment variables directly like the original code.
Version bump to 2.0.1-clean
2025-09-26 13:45:16 -04:00
sbcrumb b431107abd feat: Complete clean TV NFO processing implementation v2.0.0
Local Docker Build (Dev) / build-dev (push) Successful in 17s
- New EpisodeNFOManager class with video filename matching
- NFO files now match video filenames instead of S01E01.nfo format
- Clean TVSeriesProcessor with proper Sonarr API integration
- Proper date lookup: database -> Sonarr import history -> airdate fallback
- Updated manual scan endpoint to use new clean processor
- Removed all migration logic and nfo_migration_required sources

This is a complete rewrite of TV episode processing with focus on:
1. NFO filenames matching video files
2. Proper dateadded field population from Sonarr
3. Clean separation of concerns
4. Robust fallback logic
2025-09-26 13:39:41 -04:00
sbcrumb 9b0da8b6ed fix: Remove nfo_migration_required source and ensure proper date lookup
Local Docker Build (Dev) / build-dev (push) Successful in 49s
- Remove bogus 'nfo_migration_required' source that bypassed proper date lookup
- Ensure episodes with existing NFOs still get processed through Sonarr API
- Episodes should get proper dateadded from Sonarr import history or airdate fallback
- Version bump to 1.9.3-longnames
2025-09-26 10:11:52 -04:00
sbcrumb 9bc8955ad4 fix: Preserve and convert NFO filenames to match video files
Local Docker Build (Dev) / build-dev (push) Successful in 23s
- Preserve existing long-named NFO files instead of migrating to short names
- Convert existing short NFO names (S01E01.nfo) to match video filenames
- Create new NFOs with long names based on matching video files
- Only fallback to short names if no matching video file exists
2025-09-26 09:56:23 -04:00
sbcrumb a4c333aa85 Merge pull request 'version: Update version to 1.9.1 o push to github' (#13) from dev into main
Local Docker Build (Main) / build (push) Successful in 19s
Local Docker Build (Main) / deploy (push) Successful in 0s
Local Docker Build (Dev) / build-dev (push) Successful in 20s
Reviewed-on: #13
2025-09-25 14:39:07 -04:00
sbcrumb f515d70241 version: Update version to 1.9.1 o push to github
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Local Docker Build (Main) / build (pull_request) Successful in 1m1s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
2025-09-25 14:38:17 -04:00
sbcrumb ade771f661 Merge branch 'dev'
Local Docker Build (Main) / build (push) Successful in 39s
Local Docker Build (Dev) / build-dev (push) Successful in 34s
Local Docker Build (Main) / deploy (push) Successful in 0s
2025-09-25 14:26:31 -04:00
sbcrumb 3e8ea79cbb update emby dll
Local Docker Build (Dev) / build-dev (push) Successful in 23s
Local Docker Build (Main) / build (pull_request) Successful in 24s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
2025-09-25 14:23:28 -04:00
sbcrumbandClaude 2b6fd27913 Fix movie webhook comprehensive IMDb detection and batch processing
Local Docker Build (Dev) / build-dev (push) Successful in 28s
Local Docker Build (Main) / build (pull_request) Successful in 24s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
- Fix movie webhook to use comprehensive IMDb detection (dir, filename, movie.nfo) instead of simple string search
- Fix batch processing NameError: use path_obj instead of undefined path variable
- Version bump to 1.8.3

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-25 13:31:27 -04:00
sbcrumbandClaude a8f8e0a7bd Fix movie webhook processing and organize NFOGuard fields
Local Docker Build (Dev) / build-dev (push) Successful in 34s
- Fix WebhookBatcher missing nfo_manager attribute that caused movie processing errors
- Move NFOGuard comment from top to bottom of episode NFOs with other NFOGuard fields
- All NFOGuard additions now grouped together at bottom for better organization

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-09-25 13:11:23 -04:00
sbcrumb 5e3d4845b0 fix: Use comprehensive IMDb detection for movie batch validation
Local Docker Build (Dev) / build-dev (push) Successful in 33s
- Replace simple string search with find_movie_imdb_id() method
- Check directory name, filenames, and NFO file content for IMDb ID
- Handle both full IMDb IDs (tt26394837) and number formats
- Add detailed logging for detected vs expected IMDb matching
- Fix validation failures when IMDb ID is in filename/NFO but not directory name

Resolves movie webhook processing failures when directory lacks IMDb ID
but files contain proper identification.
2025-09-25 10:38:27 -04:00
sbcrumb 6a20337181 fix: Improve title detection logic to prevent duplicates
Local Docker Build (Dev) / build-dev (push) Successful in 26s
- Fix flawed title detection that caused duplicates when migrating NFOs
- Add robust title validation (check for non-empty, non-whitespace text)
- Improve debugging output to show title detection process
- Properly handle existing valid titles vs missing/empty titles
- Remove invalid title elements before adding filename-extracted titles

Resolves duplicate <title> elements in NFO files during migration.
2025-09-25 10:33:03 -04:00
sbcrumb f1420cac58 fix: Add title extraction directly to create_episode_nfo method
Local Docker Build (Dev) / build-dev (push) Successful in 19s
- Add _extract_title_from_filename method to NFOManager class
- Integrate title extraction fallback in create_episode_nfo method
- Extract titles when NFO lacks title element or has empty title
- Support both .mkv and .mp4 files with comprehensive logging
- Fix applied to actual NFO creation method being used by episodes

Resolves title extraction by working in the correct code path
rather than relying on metadata processing that wasn't being called.
2025-09-25 09:40:26 -04:00
sbcrumb 39c1e54922 debug: Add INFO log to track if _get_episode_metadata is called
Local Docker Build (Dev) / build-dev (push) Successful in 23s
2025-09-25 09:36:08 -04:00
sbcrumb e870474f07 debug: Change DEBUG logs to INFO to trace title extraction
Local Docker Build (Dev) / build-dev (push) Successful in 18s
2025-09-25 09:32:58 -04:00
sbcrumb b4fe0cb7fe bump: Version 1.8.2 with title extraction functionality
Local Docker Build (Dev) / build-dev (push) Successful in 28s
2025-09-25 09:26:09 -04:00
sbcrumb fef99b9bfd Merge pull request 'titlename-fix' (#10) from titlename-fix into dev
Local Docker Build (Dev) / build-dev (push) Successful in 25s
Reviewed-on: #10
2025-09-25 09:15:07 -04:00
sbcrumb c9567ce70b update: update version number 2025-09-25 09:15:07 -04:00
sbcrumb ba488cdbea Merge pull request 'titlename-fix' (#9) from titlename-fix into dev
Local Docker Build (Dev) / build-dev (push) Successful in 33s
Reviewed-on: #9
2025-09-25 09:08:50 -04:00
sbcrumb c33a26460d debug: Add comprehensive debugging for title extraction
- Add detailed debug logging to _extract_title_from_filename() method
- Log file search, regex pattern matching, and title cleanup process
- Fix Tier 2 processing to call _get_episode_metadata() for title extraction
- Add debug logging to _get_episode_metadata() to trace execution flow
- Include both .mkv and .mp4 file checking with detailed logs

This should help identify why title extraction isn't working for
recreated NFO files and provide visibility into the extraction process.
2025-09-25 09:08:50 -04:00
sbcrumb 91031ba321 Merge pull request 'fix: Add title enhancement for existing NFO files' (#8) from titlename-fix into dev
Local Docker Build (Dev) / build-dev (push) Successful in 33s
Reviewed-on: #8
2025-09-25 09:01:04 -04:00
sbcrumb a1921936f7 fix: Add title enhancement for existing NFO files
- Modify extract_nfoguard_dates_from_episode_nfo() to detect missing titles
- Add enhance_existing_episode_nfo_with_title() method to update NFOs with titles
- Enhance Tier 1 processing to check for missing titles in existing NFO files
- Extract titles from filenames and update existing NFOs that lack title elements
- Fix NFO filename case to match S01E01.nfo format
- Preserves all existing NFO content while adding missing title elements

Addresses issue where existing NFO files with NFOGuard metadata were
skipping title extraction due to Tier 1 optimization caching.
2025-09-25 09:01:04 -04:00
sbcrumb 7131aa211c Merge pull request 'fix: Add filename-based title extraction for TV episodes' (#7) from titlename-fix into dev
Local Docker Build (Dev) / build-dev (push) Successful in 22s
Reviewed-on: #7
2025-09-25 08:54:51 -04:00
sbcrumb 16d9956202 fix: Add filename-based title extraction for TV episodes
Local Docker Build (Dev) / build-dev (pull_request) Successful in 18s
- Add _extract_title_from_filename() method to extract episode titles from video filenames
- Enhance _get_episode_metadata() to use filename fallback when Sonarr API doesn't provide titles
- Update all _get_episode_metadata() calls to pass season directory for filename extraction
- Extract titles from patterns like: Series-S01E01-Episode Title[WEBDL-1080p][AAC2.0][h264].mkv
- Preserves existing Sonarr API behavior while providing fallback for missing titles
- Fixes episodes with missing <title> elements in NFO files when Sonarr data is incomplete

Resolves issue where episodes processed via sonarr:history.import had empty NFO titles
despite clear title information being available in the video filenames.
2025-09-25 08:53:56 -04:00
sbcrumb edaa92ef9a dev (#6)
Local Docker Build (Main) / build (push) Successful in 33s
Local Docker Build (Main) / deploy (push) Successful in 0s
Reviewed-on: #6
2025-09-24 20:06:45 -04:00
sbcrumb c21a0df9c1 Merge pull request 'fix: nfo' (#5) from nfofix into dev
Local Docker Build (Dev) / build-dev (push) Successful in 28s
Local Docker Build (Main) / build (pull_request) Successful in 23s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
Reviewed-on: #5
2025-09-24 19:36:18 -04:00
sbcrumb 27430a7ead fix: nfo
Local Docker Build (Dev) / build-dev (pull_request) Successful in 23s
2025-09-24 19:35:39 -04:00
sbcrumb 210af8ac4b tv-nfo (#4)
Local Docker Build (Dev) / build-dev (push) Successful in 23s
Reviewed-on: #4
Co-authored-by: SBCrumb <[email protected]>
Co-committed-by: SBCrumb <[email protected]>
2025-09-24 18:53:48 -04:00
sbcrumb ca2e77f4c7 remove .local
Local Docker Build (Dev) / build-dev (push) Successful in 17s
2025-09-24 15:14:40 -04:00
sbcrumb 70cc716cb8 remove .local
Local Docker Build (Main) / build (push) Successful in 24s
Local Docker Build (Main) / deploy (push) Successful in 0s
2025-09-24 15:14:18 -04:00
sbcrumb 18b6dad7ce Merge branch 'dev'
Local Docker Build (Main) / build (push) Successful in 23s
Local Docker Build (Main) / deploy (push) Successful in 0s
2025-09-24 15:11:24 -04:00
sbcrumb bd9ce8f48d feat: NFOGuard v1.8.0 - Comprehensive three-tier optimization system with international fallback
Local Docker Build (Main) / build (push) Successful in 19s
Local Docker Build (Main) / deploy (push) Successful in 0s
Major features and improvements:

🚀 THREE-TIER PERFORMANCE OPTIMIZATION:
- Tier 1: NFO file caching (99% faster, instant recovery)
- Tier 2: Database caching (90% faster, skip API calls)
- Tier 3: Full API processing (normal speed, only when needed)
- Extended to both movies AND TV episodes for complete coverage

🌍 INTERNATIONAL RELEASE DATE SUPPORT:
- Smart fallback hierarchy: US → English-speaking countries → any country
- Handles movies without US release dates (e.g., The Fabric of Christmas 2023)
- Prioritizes culturally relevant dates while ensuring comprehensive coverage

🎬 TMDB ID FALLBACK SYSTEM:
- Support for movies with TMDB IDs but no IMDb IDs (e.g., For the One 2024)
- Tolerant XML parsing handles NFO files with trailing URLs
- Extracts premiered dates from existing NFO files as fallback source

📊 ENHANCED DEBUGGING & MONITORING:
- Failed movies logged to logs/failed_movies.log for troubleshooting
- Comprehensive logging shows which optimization tier is used
- Enhanced IMDb/TMDB ID detection with detailed status messages

🔧 DATABASE REBUILD CAPABILITIES:
- Instant recovery from existing NFO files without API calls
- Perfect for migrations, disaster recovery, and system rebuilds
- Maintains performance even with thousands of movies/episodes

💾 SMART CACHING & NFO MANAGEMENT:
- NFOGuard fields properly positioned at bottom for Emby plugin compatibility
- Database-first optimization eliminates redundant API calls
- Intelligent should_query logic prevents unnecessary processing

Technical improvements include tolerant XML parsing, three-tier optimization for TV episodes, English-speaking country prioritization, TMDB fallback processing, failed movies debug logging, comprehensive database rebuild support, and performance optimizations eliminating 90%+ processing time on warm systems.
2025-09-24 14:19:31 -04:00
sbcrumb 0bd7c3f883 bump: Update VERSION to 1.8.0 for major release
Local Docker Build (Dev) / build-dev (push) Successful in 28s
Comprehensive three-tier optimization system with international fallback support
2025-09-24 14:18:21 -04:00
sbcrumb bd7538abbd feat: Add dedicated failed movies debug log
Local Docker Build (Dev) / build-dev (push) Successful in 24s
Local Docker Build (Main) / build (pull_request) Successful in 20s
Local Docker Build (Main) / deploy (pull_request) Has been skipped
- Create logs/failed_movies.log for movies with no_valid_date_source
- Logs movie name, IMDb ID, failure reason, and timestamp
- Helps users identify problematic movies needing manual attention
- Useful for debugging API issues and monitoring system health
- Documented in SUMMARY.md action items for troubleshooting workflow
2025-09-24 14:10:02 -04:00
sbcrumb aa9f9d9194 feat: Prioritize English-speaking countries in release date fallback
Local Docker Build (Dev) / build-dev (push) Successful in 26s
- Add two-tier international fallback: English-speaking first, then any country
- English-speaking countries: GB, CA, AU, NZ, IE
- For The Fabric of Christmas (2023): will try AU, CA before BE
- Maintains cultural relevance while ensuring comprehensive coverage
- Clear logging shows which tier is used for transparency
2025-09-24 14:06:11 -04:00