-
-
Notifications
You must be signed in to change notification settings - Fork 30
4. Integrations
Integrations connect Yamtrack to external services for imports, scrobbling (auto-logging), collection metadata, or automation. Each integration maps to specific media types and uses either pull-based imports (scheduled or manual) or push-based webhooks.
Account connections (imports / polling)
- Plex: imports watch/listen history; optional webhook scrobbling; collection metadata extraction.
- Trakt: import movies + TV (public or OAuth for private).
- Simkl: import movies + TV + anime (OAuth).
- AniList: import anime + manga (public or OAuth for private).
- Pocket Casts: import podcast history; scheduled every 2 hours.
- Last.fm: poll recent music scrobbles on a schedule.
- Steam: import games using Steam ID 64.
Webhooks (push events)
- Plex: playback and rating events for TV/Movie/Music.
- Jellyfin: playback events for TV/Movie.
- Emby: playback events for TV/Movie.
- Jellyseerr: request automation for TV/Movie status updates.
Imports are pull-based jobs that run in the background (Celery). Most support once or scheduled runs and a mode:
- new: skip items already in your library.
- overwrite: delete existing items for the matched media type/source and re-import.
Matching + dedupe
- Imports match by provider IDs (TMDB, MAL, IGDB, etc.). Entries missing IDs are skipped.
- Importers dedupe within a run and skip duplicates across runs. Some sources (Pocket Casts) perform extra merge steps for duplicate episodes.
Retries + SQLite locks
- Import write operations retry on SQLite lock or disk I/O errors with exponential backoff.
What imports affect
- Imports create or update media items, statuses, and history entries.
- They trigger calendar reloads and can schedule collection metadata updates (Plex).
- Stats/history caches may refresh after imports (Last.fm polling explicitly refreshes statistics).
Jump to providers
Media types
- Movies (TMDB), TV/Seasons/Episodes (TMDB), Music (MusicBrainz matching).
Connect
- Pin-based OAuth flow; stores a Plex token, account ID, and library sections.
- Optional Plex username allowlist controls webhook processing.
Import
- Pulls Plex watch/listen history and replays it into Yamtrack.
- Supports once or scheduled runs and new/overwrite modes.
- Can target a specific Plex library or all libraries.
Auto-logging (webhooks)
- Supports
media.play,media.scrobble, andmedia.rateevents. -
media.playmarks items in progress;media.scrobblemarks completed plays. - Ratings are updated when Plex sends
media.rate(not always reliable).
Collection metadata
- Collection metadata is fetched from Plex library items and stored on the item.
- A separate “update_collection” mode can refresh collection metadata.
- Rating key + Plex URI caching speeds up metadata refresh and avoids full library scans.
GUID parsing + rating key caching
- Plex GUIDs can be incomplete or inconsistent. Yamtrack resolves TMDB IDs using TMDB/IMDB/TVDB IDs and title search fallbacks.
- Cached rating keys allow future metadata updates without re-scanning Plex.
Troubleshooting
- If items fail to match, check that Plex GUIDs include TMDB/IMDB/TVDB IDs.
- If ratings don’t update, Plex may not emit
media.rate; run an import to sync ratings. - Missing collection metadata usually means the item wasn’t matched or metadata fetch failed.
Media types
- Podcasts (Show → Episode).
Connect
- Email/password login; stores access + refresh tokens.
Import pipeline
- Runs an initial import on connect, then scheduled imports every 2 hours.
- Always uses
newmode (no overwrite), and merges duplicate episodes.
RSS fallback
- If a show lacks a feed URL, Yamtrack tries iTunes to discover the RSS feed.
- RSS episodes are synced to fill in missing metadata and episode lists.
Common failure modes
- OAuth logins (Apple/Google) require setting a password first.
- If the connection is marked broken, reconnect to refresh tokens.
- Missing episode metadata often resolves after RSS sync.
Media types
- Music (scrobbles → track plays).
Connect
- Username-only connection; requires public scrobbles.
Polling vs scrobbling
- Uses scheduled polling (default every 15 minutes) to fetch recent tracks.
- All Last.fm scrobbles are treated as completed plays.
History + stats
- Scrobbles create track-level history entries that roll up to albums/artists.
- Statistics cache is refreshed after polling.
Troubleshooting
- Rate limits can delay imports; try again later.
- Private profiles or invalid usernames will not connect.
Media types
- Movies and TV (TMDB).
Webhook setup
- Configure Jellyseerr to POST a JSON payload to Yamtrack’s webhook URL.
- Payload keys:
media_type,media_tmdbid,media_status,requestedBy_username.
Automation behavior
- Creates the item if missing and sets status (Planning or In Progress).
- Triggered statuses and allowed requesters are configurable per user.
- Does not log history plays; it only adds or updates items.
Media types
- Movies and TV (via TMDB/IMDB/TVDB IDs in webhook payloads).
Webhook setup
- Configure Jellyfin webhook to send
Play/Stopevents to Yamtrack.
Auto-logging
- Marks items watched when Jellyfin reports
UserData.Played. - No bulk import; webhook events only.
Troubleshooting
- If IDs are missing in the payload, Yamtrack can’t match items.
Media types
- Movies and TV (via TMDB/IMDB/TVDB IDs in webhook payloads).
Webhook setup
- Configure Emby webhook to send
playback.start/playback.stopevents.
Auto-logging
- Marks items watched when
PlaybackInfo.PlayedToCompletionis true. - No bulk import; webhook events only.
Troubleshooting
- Ensure Emby sends provider IDs (TMDB/IMDB/TVDB) for matching.
Media types
- Movies and TV (including seasons/episodes).
Public profile import
- Enter a public Trakt username to import watch history and statuses.
Private profile import (OAuth)
- OAuth is required to access private history.
Notes
- Imports can be run once or scheduled.
- Uses TMDB IDs to match movies and shows.
Media types
- Movies, TV, and Anime.
Configuration
- OAuth connection required (SIMKL ID + secret).
Notes
- Imports can be run once or scheduled.
- Movies/TV map to TMDB; anime maps to MAL IDs.
Media types
- Anime and Manga.
Public import
- Enter a public AniList username to import lists and history.
Private import (OAuth)
- OAuth is required to access private lists.
Notes
- Imports can be run once or scheduled.
Media types
- Games.
Configuration
- Requires a Steam API key and Steam ID 64.
Import requirements
- Your Steam profile must be public.
Notes
- Imports can be run once or scheduled.
Use the Yamtrack CSV format for bulk migrations or offline exports. CSV imports are pull-based jobs and use the same new/overwrite modes as other importers.
For the full format specification and field list, see: