Files
wiki/Catalogue-Self-Hosted/apps/app-explo.md
T
2026-06-09 18:40:21 +02:00

4.9 KiB

title, created, updated, type, tags, confidence, contested, sources
title created updated type tags confidence contested sources
Explo 2026-06-07 2026-06-07 app
catalogue
music
discovery
listenbrainz
youtube
python
spotify-alternative
medium false
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

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

Pages Liées