--- title: yubal created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, downloads, youtube, music, python, yt-dlp, tagging] confidence: medium contested: false sources: - https://selfh.st/apps/?tag=downloads - https://github.com/guillevc/yubal --- # 🎵 yubal > Téléchargeur et tagueur automatique pour YouTube Music : transforme playlists et albums en bibliothèque audio propre et correctement tagguée. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | https://github.com/guillevc/yubal | | **GitHub** | https://github.com/guillevc/yubal | | **License** | MIT | | **Langage** | Python (FastAPI + uv) | | **Étoiles** | 41 ⭐ | | **Dernière MAJ** | 2026 | | **Catégorie** | [[cat-downloads]] | ## Description yubal est un projet récent (fin 2025) qui se concentre sur un créneau précis : **télécharger depuis YouTube Music avec un taggage propre, prêt à importer dans un lecteur**. Là où [[app-yt-dlp-web-player]] reste généraliste (vidéo, audio, formats), yubal va plus loin sur la partie *musique* : récupération des métadonnées YT Music (titre, album, artiste, n° de piste, année, pochette), taggage via mutagen, organisation en arborescence `Artiste/Album/## - Titre.ext`. Le fonctionnement est volontairement simple : on colle une URL YouTube Music (track, album ou playlist), yubal télécharge en arrière-plan via yt-dlp, écrit les tags ID3/Vorbis, et expose une UI web légère pour suivre l'avancement. La v0.2 a ajouté le support natif des playlists (très demandé) et la possibilité de **synchroniser les métadonnées avec Spotify** (pour récupérer les cover arts haute résolution et les tags enrichis comme le BPM, l'ISRRC, etc.). L'approche est minimaliste : pas de client torrent, pas de PVR, pas d'intégration *arr. C'est un outil **périphérique** idéal à coupler avec [[app-lidarr]] (import manuel), [[app-navidrome]] (scanner) ou un simple dossier Dropbox/SMB pour écoute nomade. ## Installation ### Docker Compose (recommandé) ```yaml # docker-compose.yml services: yubal: image: ghcr.io/guillevc/yubal:latest container_name: yubal restart: unless-stopped ports: - "8484:8484" environment: - TZ=Europe/Paris - DOWNLOAD_DIR=/downloads - AUDIO_FORMAT=mp3 - AUDIO_QUALITY=320 volumes: - ./config:/app/config - /data/music/yubal:/downloads ``` ### Installation manuelle ```bash # Prérequis : Python 3.11+, ffmpeg, uv git clone https://github.com/guillevc/yubal cd yubal uv sync uv run fastapi dev app/main.py # UI sur http://localhost:8484 ``` ## Configuration - **Format de sortie** : `mp3`, `flac`, `opus`, `m4a` — défaut `mp3` pour compatibilité maximale. - **Qualité audio** : bitrate cible pour les formats lossy (`0` = best available). - **Dossier de sortie** : un seul volume monté, organisation `Artiste/Année - Album/## - Titre.ext`. - **Spotify sync (optionnel)** : client ID + secret pour enrichir les tags via l'API Spotify. - **Cookies navigateur** : export `cookies.txt` YouTube Music si l'IP est restreinte (rares cas). - **Watch folder** : un mode watch (à venir) devrait permettre de coller des URLs dans un fichier texte à surveiller. ## Alternatives ### Open Source - [[app-yt-dlp-web-player]] — UI web générique pour yt-dlp (vidéo + audio), plus large mais sans focus musique. - [[app-meetube]] — fork de MeTube, interface simple, peu de taggage. - [[app-spotizerr]] — focus Spotify uniquement, résolution via YouTube. - [[app-music-grabber]] — complément Lidarr pour backfill multi-sources. - **spotDL** — CLI Python référence, pas d'UI web, excellent tagging Spotify→YT. - **youtubedl-material** — UI web complète, plus ancien, plus lourd. ### Propriétaires (ce que yubal remplace) - **YouTube Music Premium offline** — téléchargement只能在应用内,无法在Plex/Navidrome中读取。 - **SpotTube Premium** — pareil,只能在客户端读。 - Services de ripping payants (tunepat, soundiz) — non self-hosted, abonnement mensuel. ## Sécurité - **Cookies YouTube** : si vous les fournissez pour contourner des restrictions, ils donnent accès à votre compte Google — à stocker dans `./config` chiffré, pas en variable d'environnement Docker inspectable. - **Métadonnées Spotify** : ne jamais exposer le client secret, yubal ne supporte que OAuth local. - **Droits d'auteur** : comme tout outil de la famille yt-dlp, à n'utiliser que sur du contenu sous licence libre (CC-BY) ou vos propres uploads. - **Pas d'auth par défaut** : l'UI accepte n'importe quelle URL, ne pas exposer sur Internet sans reverse proxy authentifié ([[app-traefik]] + [[app-authentik]]). - **Surface d'attaque faible** : projet jeune (~1 an), peu de dépendances lourdes, mais **bus factor 1** (un seul mainteneur actif). ## Ressources - Repository : https://github.com/guillevc/yubal - Release notes v0.2 (playlists) : https://www.reddit.com/r/selfhosted/comments/1qknc0i/ - yt-dlp upstream : https://github.com/yt-dlp/yt-dlp - mutagen (lib de taggage) : https://mutagen.readthedocs.io/ - selfh.st downloads : https://selfh.st/apps/?tag=downloads ## Pages Liées - [[cat-downloads]] — catégorie parente - [[app-lidarr]] — peut ingérer les downloads - [[app-navidrome]] — serveur de streaming musical - [[app-yt-dlp-web-player]] — alternative généraliste - [[app-spotizerr]] — alternative focus Spotify - [[app-traefik]] — reverse proxy HTTPS - [[app-authentik]] — SSO - [[recettes-docker-compose]] — templates - [[securisation-home-lab]] — bonnes pratiques