Features
-
Watchlist Sync: Automatically add Trakt watchlisted items to download systems (Radarr/Sonarr/Jellyseerr)
- New per-user settings:
SyncWatchlistMoviesandSyncWatchlistShowstoggles in Trakt user configuration - Fetches movies via
/sync/watchlist/moviesand shows via/sync/watchlist/showswithextended=fullfor genre metadata - Filters out items already in local Jellyfin library and previously processed items
- Routes downloads through existing
DownloadProviderFactory(supports Native, Jellyseerr, and Webhook modes) - Shows default to Season 1 download (Trakt watchlist doesn't specify seasons)
- 1-second throttle between downloads to avoid overwhelming download systems
- Individual item failures logged without stopping the sync process
- New per-user settings:
-
Watchlist Sync Scheduled Task: Background task running every 1 hour
- More frequent than content sync (6hr) to respond quickly to watchlist changes
- Also triggered on startup via
StartupSyncService
Improvements
-
State Tracking: Persistent tracking of processed watchlist items to prevent re-adding
ProcessedWatchlistMovieIds(TMDB IDs) andProcessedWatchlistShowIds(TVDB IDs) persisted in configuration- Reset manually by clearing IDs from config to re-trigger downloads
-
Local Library Deduplication: New
DoesMovieExist()method inLocalLibraryServiceto check movie existence by TMDB ID (excludes virtual items) -
Trakt API: New watchlist endpoints
GetMovieWatchlist(): Fetch user's movie watchlistGetShowWatchlist(): Fetch user's show watchlist
-
Configuration UI: Added watchlist sync toggles to Trakt user settings tab
Acknowledgments
- Thanks to @medallyon for implementing the watchlist sync feature