---
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
