Retour aux outils
Photos / MédiasIntermédiaireOpen sourceAuto-hébergeablev1.1.0

Explo

« Spotify Discover Weekly » auto-hébergé : télécharge automatiquement des recommandations basées sur

MAJ 2026-06-14
Explo
Site officiel Code source★ 1 585

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 *« fre

🎧 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éeValeur
Site webhttps://github.com/LumePart/Explo
GitHubhttps://github.com/LumePart/Explo
LicenseMIT
LangagePython (Flask) + TypeScript
Étoiles32 ⭐
Dernière MAJ2025
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

  • Repository : https://github.com/LumePart/Explo
  • ListenBrainz : https://listenbrainz.org/
  • yt-dlp : https://github.com/yt-dlp/yt-dlp