DJ set organizer with Rekordbox, Spotify, and Tidal integration.
Import playlists from streaming services, match tracks against your local Rekordbox library, organize them into structured sections, and export to Rekordbox XML with section colors and metadata preserved.
- Streaming import — load Spotify or Tidal playlists; tracks are matched automatically to your local library via ISRC, artist+title, and fuzzy search
- Rekordbox collection — auto-detect local Rekordbox DB or import via XML for matching
- Set builder — divide tracks into named sections (Opener, Build, Peak, Closer, …) with drag-and-drop reordering
- Section colors — apply colored labels that round-trip into Rekordbox as
Colourmetadata - Export to Rekordbox — generates a valid DJ_PLAYLISTS XML (folder-per-section with section name in
Comments) - Transition notes — freeform text notes for each track-to-track transition, saved with the project
- Dark theme — Catppuccin Mocha-inspired QSS stylesheet
- Python 3.14+
- Rekordbox 7.x (for XML import/export and DB auto-detection)
- Spotify account — optional, for playlist import
- Tidal account — optional, for playlist import
Pre-built binaries for macOS (Apple Silicon & Intel), Windows, and Linux are attached to each GitHub Release.
# Clone
git clone https://github.com/FIrgolitsch/RekordboxSetListManager.git rekordbox_set_list_manager
cd rekordbox_set_list_manager
# Install uv (if needed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync --group dev
# Run
uv run rslm
# Tests
uv run pytest
# Lint
uv run ruff checkTidal authentication happens via a device-code login in the browser — no configuration needed.
For Spotify you need a Client ID:
- Go to developer.spotify.com/dashboard and create an app.
- Add
http://127.0.0.1:8888/callbackas a Redirect URI in the app settings. - In Rekordbox Set List Manager, open Project → Service Settings… and paste your Client ID.
- File → New to start a fresh project.
- Right-click in the Section Panel (left) → Add Set List, then Add Section to build the section structure.
- Select a section, then use the context menu inside the Track Table (or Ctrl+T) → Add track… to add tracks manually, or import from a streaming service (see below).
- Drag rows to reorder tracks within a section.
- Use the filter bar above the track table to narrow tracks by title or artist. Click column headers to sort.
- Click a track to open the Transition Note editor below the table — write cues, key changes, or anything useful for the mix.
- File → Save (
Ctrl+S) — projects are saved as.setmgrfiles (JSON).
- Project → Import from Streaming Service…
- Select the Spotify or Tidal tab and authenticate.
- Browse your playlists and pick one.
- Optionally load your Rekordbox collection (XML or auto-detected DB) to match streaming tracks to local files.
- Click Match to run the matching engine, then Import to add the results.
- Unmatched tracks can still be added as metadata-only entries.
Project → Fetch Audio Features… authenticates with Spotify and downloads energy, danceability, and valence for all tracks that have a Spotify ID. The energy overview bar at the bottom visualises the set's energy arc.
Project → Export to Rekordbox… → choose a set list and an output .xml file.
In Rekordbox: File → Import Playlist from XML and point to the exported file.
Each section appears as a sub-folder; track colors and comments carry over.
| Key | Action |
|---|---|
Ctrl+N |
New project |
Ctrl+O |
Open project |
Ctrl+S |
Save project |
Ctrl+Shift+S |
Save As |
Delete |
Remove selected track from section |
Ctrl+Q |
Quit |
.setmgr files are JSON with a version envelope:
{ "version": "1", "project": { … } }Fields are versioned; opening files from older releases is backwards-compatible.
Builds are produced automatically by GitHub Actions on each release. To build locally:
uv sync --all-extras
uv run pyinstaller rekordbox_set_list_manager.spec --noconfirm
# Output: dist/RekordboxSetListManager.app (macOS) / dist/RekordboxSetListManager/ (all platforms)Model-View-Service:
| Layer | Location | Notes |
|---|---|---|
| Models | src/rekordbox_set_list_manager/models/ |
Pydantic v2, no Qt dependency |
| Services | src/rekordbox_set_list_manager/services/ |
Streaming APIs, Rekordbox XML/DB, matching |
| GUI | src/rekordbox_set_list_manager/gui/ |
PySide6; Qt item models bridge domain → views |
| Utils | src/rekordbox_set_list_manager/utils/ |
Config, constants, dark theme |
GPL-3.0-or-later