playlistd/README.md

48 lines
1.7 KiB
Markdown

# 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:
```sql
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');
```