https://github.com/LumePart/Explo
Spotify's "Discover Weekly" for self-hosted music systems
https://github.com/LumePart/Explo
airsonic discover-weekly jellyfin mpd music-discovery music-player-daemon navidrome self-hosted subsonic subsonic-plugin
Last synced: 3 months ago
JSON representation
Spotify's "Discover Weekly" for self-hosted music systems
- Host: GitHub
- URL: https://github.com/LumePart/Explo
- Owner: LumePart
- License: mit
- Created: 2023-11-10T10:24:46.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-11T18:08:26.000Z (3 months ago)
- Last Synced: 2025-01-11T19:23:31.012Z (3 months ago)
- Topics: airsonic, discover-weekly, jellyfin, mpd, music-discovery, music-player-daemon, navidrome, self-hosted, subsonic, subsonic-plugin
- Language: Go
- Homepage:
- Size: 149 KB
- Stars: 230
- Watchers: 4
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-jellyfin - Explo - Automated music discovery tool that recommended tracks based on your listening history. (🌌 Related)
README
# 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](https://listenbrainz.org/) 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 **Emby**, **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
- A self-hosted music system like Emby, Jellyfin, MPD, Plex, or any Subsonic-API compatible system (e.g., Navidrome, Airsonic).
- A [YouTube Data API](https://developers.google.com/youtube/v3/getting-started) key.
- [ListenBrainz scrobbling](https://listenbrainz.org/add-data/) set up### Installation
#### Docker
1. Download [docker-compose.yaml](https://github.com/LumePart/Explo/blob/main/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](https://github.com/LumePart/Explo/blob/main/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 ``.env`` file.
1. Download the [latest release](https://github.com/LumePart/Explo/releases/latest) and ensure it's executable
2. Make a ``.env`` file in the same directory as the binary and configure it ([refer to sample.env](https://github.com/LumePart/Explo/blob/main/sample.env) for options)
3. Add a Cron job to run Explo weekly:
```bash
crontab -e
```
Insert this to the last line to execute Explo every tuesday at 00:15 (ListenBrainz updates its discovery database on Mondays)
```bash
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](https://github.com/u2takey/ffmpeg-go): A Go wrapper for FFmpeg.
- [goutubedl](https://github.com/wader/goutubedl): A Go wrapper for yt-dlp.
- [godotenv](https://github.com/joho/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.