Initial vault setup
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user