Go to file
2024-04-20 20:12:27 +01:00
.idea Add intruction for tracked playlist rules 2024-04-20 20:12:27 +01:00
app Add interface package. Start adding auth stuff for refreshing tokens. 2023-09-12 19:35:49 +01:00
etc/playlistd various 2024-04-20 19:10:49 +01:00
migrations Add playlist building daemon 2024-04-18 22:33:45 +01:00
src various 2024-04-20 19:10:49 +01:00
systemd various 2024-04-20 19:10:49 +01:00
.gitignore Get the daemon to actually work 2024-04-16 19:10:05 +01:00
Cargo.lock various 2024-04-20 19:10:49 +01:00
Cargo.toml various 2024-04-20 19:10:49 +01:00
Containerfile Add details for building 2024-04-16 20:37:42 +01:00
LICENSE Initial 2023-08-13 21:48:41 +01:00
README.md Add intruction for tracked playlist rules 2024-04-20 20:12:27 +01:00

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 username
  • SUBSONIC_PASSWORD, your Subsonic password
  • DATABASE_URL, the URL for a Postgres database
  • DAEMON_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');