Playlist Builder [EXPERIMENTAL]
This is a draft to share the playlist builder I made. I marked it as experimental because I've changed a lot to get it to work the way I wanted it, which is not necessarily in line with the core purpose of this project.
NOTE: If you want to test this, I'd recommend you make sure it runs on a new postgres volume, it is not compatible the production one It's built on top of #195
Summary
New Playlist Builder page that combines song discovery via Smart Filters with playlist extension capabilities, plus an integrated web player for previewing songs and dark mode support.
New Features
Playlist Builder Page
A new unified interface at /playlist_builder with two tabs:
Smart Filters Tab
- Search and filter songs by multiple criteria: mood, energy, BPM, key, scale, artist, album, title
- Supports operators: contains, does not contain, is, is not, greater than, less than
- "Match All" vs "Match Any" filter logic
- Exclude button to remove unwanted songs from results
- "Send to Extend Playlist" to use filtered results as seeds for similarity search
Existing Playlist Tab
- Load playlists from your media server
- Extend with similar songs based on the playlist's audio centroid
- Include/Exclude buttons to curate recommendations
- Adjustable result count and max songs per artist
- Track Weights, to fine-tune playlist preferences
Web Player
- Sticky audio player at bottom of page
- Play/pause, seek forward/back, stop controls
- Displays current track title and artist
- Streams directly from Jellyfin, Emby, or Navidrome (in theory, only tested on Jellyfin)
Dark Mode
- Toggle via menu button
- Persists preference to localStorage
- Respects system preference on first visit
Playlist Saving
- Save curated playlists directly to media server
- Option to save without
_instantsuffix (for Playlist Builder saves)
Next step: I'm looking to add star ratings, but unfortunately Jellyfin doesn't support this. Might have to experiment with Navidrome
Other Improvements
- Jellyfin/Emby: Added
stream_urlandsong_artistto API responses - Analysis UI: Fixed progress tracking bug
- API: Similarity results now include
titleandauthorfields