Explo - Discover Weekly for Self-Hosted Music Systems
Explo is an alternative to Spotify's "Discover Weekly". It automates music discovery by downloading recommended tracks based on your listening history. Using ListenBrainz for recommendations and Youtube for downloading.
Explo offers two discovery modes:
- Playlist Discovery (default): Retrieves songs from a ListenBrainz-generated playlist.
- API Discovery: Uses the ListenBrainz API for recommendations (Note: API recommendations don't update often).
Features
- Supports Jellyfin, MPD and Subsonic-API-based systems.
- Automatically fetches recommendations and downloads the tracks.
- Adds metadata (title, artist, album) to the downloaded files.
- Creates a "Discover Weekly" playlist with the latest songs.
- Keeps past playlists by default for easy access.
Getting Started
Prerequisites
- A self-hosted music system like Jellyfin, MPD, or any Subsonic-API compatible system (e.g., Navidrome, Airsonic).
- ffmpeg installed on server
- A YouTube Data API key.
- ListenBrainz scrobbling set up
Installation
Docker
- Download docker-compose.yaml file to your system and configure volume mappings
- Make a
local.env
file in the directory defined in docker-compose and configure it (refer to sample.env for options)
- Launch the container with
docker compose up -d
Binary
- Download the latest release and ensure it's executable
- Make a
local.env
file in the same directory and configure it (refer to sample.env for options)
- Add a Cron job to run Explo weekly:
crontab -e
Insert this to the last line to execute Explo every tuesday at 00:15 (ListenBrainz updates its discovery database on Mondays)
15 0 * * 2 cd /path/to/explo && ./explo-linux-amd64
PS! To test if everything is correct change LISTENBRAINZ_DISCOVERY
to test
and run the program manually
Contributing
Contributions are always welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or submit a pull request.