.idea | ||
app | ||
etc/playlistd | ||
migrations | ||
src | ||
systemd | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
Containerfile | ||
LICENSE | ||
README.md |
playlistd
A daemon and API for automatically updating Subsonic playlists from Listenbrainz data
Note: I've not actually tested this against Subsonic, only Navidrome
Building & running
This is a standard Rust project and should be uncomplicated to build and run. It does read some environment variables:
SUBSONIC_BASE
, your Subsonic instance's API base. For navidrome users, this is<protocol>://<host>/rest
SUBSONIC_USERNAME
, your Subsonic usernameSUBSONIC_PASSWORD
, your Subsonic passwordDATABASE_URL
, the URL for a Postgres databaseDAEMON_INTERVAL
, how often to update playlists
For deploying, these can be configured in /etc/playlistd.toml
.
Container build (Ubuntu 20.04)
podman run --rm --network=host -v "$PWD":/mnt -w /mnt -e "DATABASE_URL=postgres://jude@127.0.0.1/playlistd" playlistd cargo deb
How to use
Each of these will work best when your music library is well organised with Musicbrainz metadata.
Tracked playlist
A tracked playlist is a single Subsonic playlist that tracks data from Listenbrainz. For example, a playlist that contains your top 15 songs from the past week.
You can create a tracked playlist by inserting a row into the tracked_playlist
table.
Tracked playlist rule
A tracked playlist rule is a time-based instruction to create a new tracked playlist. For example, a playlist every year that contains your top songs.
You can create a tracked playlist rule by inserting a row into the create_tracked_playlist
table.
For a yearly top songs playlist, run the following:
INSERT INTO create_tracked_playlist (id, name_template, playlist_size, tracking_user, tracking_type)
VALUES (gen_random_uuid(), '%Y - Top 100', 100, 'jellywx', 'this_year');