115 lines
4.9 KiB
Markdown
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
|