Files
2026-06-09 18:40:21 +02:00

122 lines
5.5 KiB
Markdown

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