Problem
Users with multiple Plex libraries for the same content (e.g., different language metadata) face issues with watch tracking:
- Library A: "Movies (Portuguese)" - Portuguese titles/descriptions
- Library B: "Movies (English)" - English titles/descriptions
- Same physical content, different metadata language
- Users only watch in their preferred library
- Content appears unwatched in libraries users don't access → gets incorrectly deleted
Proposed Solution
Add automatic cross-library watch tracking that treats duplicate content as a single entity for watch history purposes.
Configuration Example
libraries:
- name: "Movies (Portuguese)"
radarr: "Radarr"
last_watched_threshold: 180
# Link to duplicate libraries
duplicate_libraries:
- "Movies (English)"
- "Movies (French)"
# Optional: control deletion behavior
deletion_mode: "all_or_none" # Delete from all linked libs or none
# OR: "individual" - only delete from this library (default)
- name: "Movies (English)"
radarr: "Radarr"
last_watched_threshold: 180
duplicate_libraries:
- "Movies (Portuguese)"
- "Movies (French)"
Logic Flow
When evaluating if "The Matrix" should be deleted from "Movies (EN)":
- Deleterr detects it's part of a duplicate library group
- Automatically matches content across linked libraries using:
- IMDB ID (preferred for movies)
- TMDB ID (fallback for movies)
- TVDB ID (for shows)
- Title + Year (last resort if no IDs available)
- Checks: "Was The Matrix watched in ANY linked library (PT/EN/FR)?"
- If watched in any library → exclude from deletion in all linked libraries
- If unwatched in all libraries → apply deletion rules
No manual matching configuration needed — Deleterr should use the best available identifier automatically.
Deletion Modes
all_or_none (recommended)
- If deleting, remove from ALL linked libraries
- Prevents orphaned copies
- Keeps libraries in sync
individual (default)
- Only delete from specific library
- Preserves content in other language libraries
Matching Strategy (Auto-Detected)
Deleterr should automatically use the best matching method:
- Try IMDB ID first (most reliable, works across languages)
- Fallback to TMDB ID (if IMDB not available)
- Fallback to TVDB ID (for TV shows)
- Last resort: Title + Year normalization (strip accents, normalize spacing)
No user configuration required — just specify which libraries are duplicates.
Use Cases
- Multi-language households: Portuguese and English libraries for different family members
- International content: Same shows with native vs. localized metadata
- Shared Plex servers: Different user groups prefer different metadata languages
Benefits
- Language-agnostic watch tracking: Watch status syncs across metadata variants
- Prevents accidental deletions: Content watched in PT library won't be deleted from EN library
- Clean library management: Option to delete from all duplicates or keep them in sync
Implementation Notes
- Query Plex API for IMDB/TMDB/TVDB IDs from all linked libraries
- Build cross-library mapping at runtime
- Cache mappings to avoid repeated API calls
- Log warnings if content found in one library but not matched in linked libraries
Would appreciate feedback on the config structure and deletion mode defaults!
Problem
Users with multiple Plex libraries for the same content (e.g., different language metadata) face issues with watch tracking:
Proposed Solution
Add automatic cross-library watch tracking that treats duplicate content as a single entity for watch history purposes.
Configuration Example
Logic Flow
When evaluating if "The Matrix" should be deleted from "Movies (EN)":
No manual matching configuration needed — Deleterr should use the best available identifier automatically.
Deletion Modes
all_or_none(recommended)individual(default)Matching Strategy (Auto-Detected)
Deleterr should automatically use the best matching method:
No user configuration required — just specify which libraries are duplicates.
Use Cases
Benefits
Implementation Notes
Would appreciate feedback on the config structure and deletion mode defaults!