🎧 Explo
« Spotify Discover Weekly » auto-hébergé : télécharge automatiquement des recommandations basées sur votre historique d'écoute, via ListenBrainz (curation) et YouTube (source audio).
| Métadonnée | Valeur |
|---|---|
| Site web | https://github.com/LumePart/Explo |
| GitHub | https://github.com/LumePart/Explo |
| License | MIT |
| Langage | Python (Flask) + TypeScript |
| Étoiles | 32 ⭐ |
| Dernière MAJ | 2025 |
| Catégorie | [[cat-music]] |
Description
Explo comble un manque pour les utilisateurs de [[app-funkwhale]], Navidrome ou [[app-jellyfin]] : l'absence d'équivalent auto-hébergé du Discover Weekly de Spotify. C'est un daemon de découverte qui récupère vos top artistes/tracks via ListenBrainz (communauté MusicBrainz), interroge l'API « fresh recommendations » pour obtenir des morceaux nouveaux, puis télécharge chaque titre via YouTube/yt-dlp avec taggage ID3 propre (artiste, album, n° de piste, cover) et range dans Artiste/Année - Album/## - Titre.ext. Les fichiers atterrissent dans un dossier surveillé par votre serveur de streaming.
Différenciation : [[app-lidarr]] gère la bibliothèque (qualité, organisation) sans algo de découverte. [[app-music-grabber]] et [[app-yubal]] sont des téléchargeurs à la demande depuis URL. Explo est le premier maillon discovery → library : l'algo choisit pour vous. Limites : qualité audio dépendante de YouTube (variable), matching titre→vidéo parfois imparfait (remaster, live). Pour du CD/master, compléter avec Qobuz/HDtracks ou Tidal HiFi.
Installation
Docker Compose
# docker-compose.yml
services:
explo:
image: ghcr.io/lumepart/explo:latest
container_name: explo
restart: unless-stopped
ports:
- "8090:8090"
environment:
- TZ=Europe/Paris
- LISTENBRAINZ_TOKEN=***
- LISTENBRAINZ_USER=your_username
- DOWNLOAD_DIR=/library/incoming
- AUDIO_FORMAT=mp3
- AUDIO_QUALITY=320
- CRON_SCHEDULE=0 4 * * 1
volumes:
- ./explo-config:/app/config
- /data/music/library:/library
Installation manuelle
git clone https://github.com/LumePart/Explo cd Explo pip install -r requirements.txt cp .env.example .env python -m explo # UI sur :8090
Configuration
- ListenBrainz : compte sur listenbrainz.org, récupérer un user token dans le profil. Compatible avec tout scrobbler (Maloja, [[app-funkwhale]], Navidrome via plugin).
- Cron interne : planification des runs (défaut lundi 4h, modifiable). Chaque run : recos ListenBrainz → download YouTube → tag → range.
- Filtres qualité : bitrate min, format préféré (FLAC > MP3), exclusion karaoké/live/8-bit.
- Cible de bibliothèque :
DOWNLOAD_DIRdoit être scanné par [[app-funkwhale]] ou [[app-jellyfin]].
Alternatives
Open Source
- [[app-music-grabber]] — downloader à la demande depuis URL, pas de discovery.
- [[app-lidarr]] — gestionnaire bibliothèque (qualité, organisation) sans algo.
- [[app-yubal]] — downloader YouTube Music, pas de reco.
- [[app-spotizerr]] — downloader Spotify API, pas de discovery.
- spotDL — CLI Python, download depuis URL Spotify, pas d'algo.
Propriétaires
- Spotify Discover Weekly / Release Radar — algo propriétaire opaque, verrouillé écosystème Spotify.
- Apple Music Personal Station — idem fermé.
- Last.fm Pro — reco, sans download auto.
- Tidal « My Mix » — reco propriétaire.
Sécurité
- yt-dlp comme source : sensible aux changements YouTube, peut casser temporairement.
- Légalité : téléchargement YouTube contourne les CGU et potentiellement le droit d'auteur. Directive UE 2019/790 tolère la copie privée dans certains cas.
- Bus factor 1 : mainteneur unique (LumePart), projet < 1 an, risque d'abandon. Forker le repo est prudent.
- Token ListenBrainz : dans
./explo-config, à chiffrer, pas de commit. - Pas d'auth par défaut sur
:8090: derrière [[app-traefik]] + [[app-authentik]] si exposé.
Ressources
- Repository : https://github.com/LumePart/Explo
- ListenBrainz : https://listenbrainz.org/
- yt-dlp : https://github.com/yt-dlp/yt-dlp

