Skip to main content

Playlist Management

Spotter provides comprehensive playlist management with sync capabilities across services.

Overview​

  • View playlists from Navidrome, Spotify, and Last.fm in one place
  • Sync external playlists to your Navidrome library
  • AI-powered playlist enhancement with the Vibes Engine

Playlist Syncing​

Sync playlists from Spotify or Last.fm to your Navidrome library:

  1. Navigate to any non-Navidrome playlist
  2. Toggle Sync to Navidrome to enable syncing
  3. Spotter will:
    • Match tracks from the source playlist to your Navidrome library
    • Create a playlist in Navidrome with the matched tracks
    • Periodically update the playlist when the source changes

Track Matching​

Tracks are matched using these strategies (in order of priority):

  1. ISRC Match: If available, matches by International Standard Recording Code
  2. Exact Match: Matches by exact track name and artist (case-insensitive)
  3. Fuzzy Match: Matches similar track names with configurable confidence threshold

Configuration​

VariableDescriptionDefault
SPOTTER_PLAYLIST_SYNC_MIN_MATCH_CONFIDENCEMinimum confidence for fuzzy matching (0.0-1.0)0.8
SPOTTER_PLAYLIST_SYNC_INCLUDE_UNMATCHED_TRACKSInclude unmatched tracks as placeholdersfalse

Sync Status​

The playlist detail page shows sync status with a 5-state indicator:

StateLabelColorCondition
Error"Sync Error"RedSync encountered an error
Pending"Syncing..."BlueInitial sync in progress
Neutral"Not Synced"GrayNothing to sync or sync disabled
Success"Fully Synced"GreenAll tracks matched
Warning"Partial Sync"OrangeSome tracks couldn't be matched

Sync Actions​

From the playlist dropdown menu:

  • Sync Now: Trigger an immediate sync
  • Rebuild: Delete Navidrome playlist and re-sync from scratch
  • Disable: Stop syncing this playlist

Configuration​

# Sync interval for enabled playlists
SPOTTER_PLAYLIST_SYNC_SYNC_INTERVAL=1h

# Delete Navidrome playlist when sync is disabled
SPOTTER_PLAYLIST_SYNC_DELETE_ON_UNSYNC=false

API Endpoints​

EndpointMethodDescription
/playlists/{id}/toggle-syncPOSTEnable/disable sync
/playlists/{id}/syncPOSTTrigger async sync
/playlists/{id}/rebuild-syncPOSTDelete and re-sync
/playlists/{id}/sync-statusGETGet sync status as JSON

Sync Events​

All sync operations are logged to the sync_events table:

  • playlist_sync_started - Sync operation initiated
  • playlist_sync_completed - Sync completed successfully
  • playlist_sync_failed - Sync failed with error details
  • playlist_sync_removed - Playlist was removed from Navidrome