|
1 | 1 | # Explo - Discover Weekly for Self-Hosted Music Systems |
2 | 2 |
|
3 | | -**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. |
| 3 | +**Explo** bridges the gap between music discovery and self-hosted music systems. It serves as a self-hosted alternative to Spotify’s *Discover Weekly*, automating music discovery based on your listening history. |
4 | 4 |
|
5 | | -Explo offers two discovery modes: |
| 5 | +Explo uses the [ListenBrainz](https://listenbrainz.org/) recommendation engine to retrieve personalized tracks and downloads them directly into your music library. |
6 | 6 |
|
7 | | -1. Playlist Discovery (default): Retrieves songs from a ListenBrainz-generated playlist. |
8 | | -2. API Discovery: Uses the ListenBrainz API for recommendations (Note: API recommendations don't update often). |
| 7 | +--- |
9 | 8 |
|
10 | 9 | ## Features |
11 | 10 |
|
12 | | -- Supports **Emby**, **Jellyfin**, **MPD**, **Plex** and **Subsonic-API-based systems**. |
13 | | -- Automatically fetches recommendations and downloads the tracks. |
14 | | -- Adds metadata (title, artist, album) to the downloaded files. |
15 | | -- Creates a "Discover Weekly" playlist with the latest songs. |
16 | | -- Keeps past playlists by default for easy access. |
| 11 | +- Fetches weekly music recommendations based on your listening history |
| 12 | +- Downloads tracks using YouTube, Soulseek (or both!) |
| 13 | +- Adds metadata (title, artist, album) to each file (youtube downloads) |
| 14 | +- Creates a “Discover Weekly” playlist in your music system |
| 15 | +- Keeps previous playlists for later listening |
17 | 16 |
|
18 | | -## Getting Started |
| 17 | +--- |
19 | 18 |
|
20 | | -### Prerequisites |
| 19 | +## Documentation |
21 | 20 |
|
22 | | -- A self-hosted music system like Emby, Jellyfin, MPD, Plex, or any Subsonic-API compatible system (e.g., Navidrome, Airsonic). |
23 | | -- A [YouTube Data API](https://developers.google.com/youtube/v3/getting-started) key. |
24 | | -- [ListenBrainz scrobbling](https://listenbrainz.org/add-data/) set up |
| 21 | +See the [Wiki Home](https://github.com/LumePart/Explo/wiki) for an overview of supported systems and next steps. |
25 | 22 |
|
26 | | -### Installation |
| 23 | +Or jump directly to: |
27 | 24 |
|
28 | | -#### Docker |
29 | | - |
30 | | -1. Download [docker-compose.yaml](https://github.com/LumePart/Explo/blob/main/docker-compose.yaml) file to your system and configure volume mappings |
31 | | -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) |
32 | | -3. Launch the container with `docker compose up -d` |
33 | | - |
34 | | -#### Binary |
35 | | - |
36 | | -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. |
37 | | - |
38 | | -1. Download the [latest release](https://github.com/LumePart/Explo/releases/latest) and ensure it's executable |
39 | | -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) |
40 | | -3. Add a Cron job to run Explo weekly: |
41 | | -```bash |
42 | | -crontab -e |
43 | | -``` |
44 | | -Insert this to the last line to execute Explo every tuesday at 00:15 (ListenBrainz updates its discovery database on Mondays) |
45 | | -```bash |
46 | | -15 0 * * 2 cd /path/to/explo && ./explo-linux-amd64 |
47 | | -``` |
48 | | -**PS!** To test if everything is correct change ``LISTENBRAINZ_DISCOVERY`` to ``test`` and run the program manually |
| 25 | +- [Getting Started](https://github.com/LumePart/Explo/wiki/2.-Getting-Started) – Installation and setup guide |
| 26 | +- [Configuration Parameters](https://github.com/LumePart/Explo/wiki/3.-Configuration-Parameters) – Environment variable reference |
| 27 | +- [System Notes](https://github.com/LumePart/Explo/wiki/4.-System-Notes) – Known issues and system-specific tips |
| 28 | +- [FAQ](https://github.com/LumePart/Explo/wiki/6.-FAQ) – Common questions |
49 | 29 |
|
50 | 30 | ## Acknowledgements |
51 | 31 |
|
52 | 32 | Explo uses the following 3rd-party libraries: |
53 | 33 |
|
54 | | -- [ffmpeg-go](https://github.com/u2takey/ffmpeg-go): A Go wrapper for FFmpeg. |
| 34 | +- [ffmpeg-go](https://github.com/u2takey/ffmpeg-go): A Go wrapper for FFmpeg |
55 | 35 |
|
56 | | -- [goutubedl](https://github.com/wader/goutubedl): A Go wrapper for yt-dlp. |
| 36 | +- [goutubedl](https://github.com/wader/goutubedl): A Go wrapper for yt-dlp |
57 | 37 |
|
58 | | -- [godotenv](https://github.com/joho/godotenv): A library for loading configuration from .env files. |
| 38 | +- [godotenv](https://github.com/joho/godotenv): A library for loading configuration from .env files |
59 | 39 |
|
60 | 40 | ## Contributing |
61 | 41 |
|
|
0 commit comments