Skip to content
/ Explo Public

Spotify's "Discover Weekly" for self-hosted music systems

License

Notifications You must be signed in to change notification settings

LumePart/Explo

Repository files navigation

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:

  1. Playlist Discovery (default): Retrieves songs from a ListenBrainz-generated playlist.
  2. API Discovery: Uses the ListenBrainz API for recommendations (Note: API recommendations don't update often).

Features

  • Supports Jellyfin, MPD, Plex 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

Installation

Docker

  1. Download docker-compose.yaml file to your system and configure volume mappings
  2. Make a .env file in the directory defined in docker-compose and configure it (refer to sample.env for options)
  3. Launch the container with docker compose up -d

Binary

Make sure ffmpeg and yt-dlp are installed on the system and accessible via $PATH. Alternatively, you can specify their paths in the local.env file.

  1. Download the latest release and ensure it's executable
  2. Make a .env file in the same directory as the binary and configure it (refer to sample.env for options)
  3. 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

Acknowledgements

Explo uses the following 3rd-party libraries:

  • ffmpeg-go: A Go wrapper for FFmpeg.

  • goutubedl: A Go wrapper for yt-dlp.

  • godotenv: A library for loading configuration from .env files.

Contributing

Contributions are always welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or submit a pull request.