Files
2026-06-09 18:40:21 +02:00

115 lines
4.9 KiB
Markdown

---
title: Explo
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, music, discovery, listenbrainz, youtube, python, spotify-alternative]
confidence: medium
contested: false
sources:
- https://selfh.st/apps/?tag=music
- https://github.com/LumePart/Explo
---
# 🎧 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
```yaml
# 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
```bash
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](https://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_DIR` doit ê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
## Pages Liées
- [[cat-music]] — catégorie parente
- [[app-funkwhale]] — serveur cible naturel (scrobbles LB)
- [[app-jellyfin]] — alternative serveur
- [[app-lidarr]] — gestionnaire complémentaire
- [[app-music-grabber]] — downloader à la demande
- [[app-yubal]] — alternative YT
- [[app-traefik]] — reverse proxy
- [[app-authentik]] — SSO
- [[recettes-docker-compose]] — templates
- [[securisation-home-lab]] — bonnes pratiques