MeTube : programme auto-hébergé de téléchargement YouTube
(github.com/alexta69)-
Arrêt des builds ARM 32 bits
- Les nouvelles versions de Node ne prennent pas en charge ARM 32 bits
- Une migration vers un OS 64 bits est nécessaire en raison des mises à jour de sécurité et des problèmes de dépendances
-
Présentation de MeTube
- Interface web de youtube-dl (utilisant le fork yt-dlp)
- Prend en charge le téléchargement de vidéos depuis YouTube et de nombreux autres sites
Exécution avec Docker
-
Commande Docker
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube -
Exemple docker-compose
version: "3" services: metube: image: ghcr.io/alexta69/metube container_name: metube restart: unless-stopped ports: - "8081:8081" volumes: - /path/to/downloads:/downloads
Configuration via variables d'environnement
- UID : identifiant utilisateur sous lequel MeTube s'exécute (par défaut : 1000)
- GID : identifiant de groupe sous lequel MeTube s'exécute (par défaut : 1000)
- UMASK : valeur umask (par défaut : 022)
- DEFAULT_THEME : thème par défaut (
light,dark,auto, par défaut :auto) - DOWNLOAD_DIR : chemin de stockage des téléchargements (par défaut :
/downloads) - AUDIO_DOWNLOAD_DIR : chemin de stockage des téléchargements audio uniquement (par défaut :
DOWNLOAD_DIR) - DOWNLOAD_DIRS_INDEXABLE : indique si le répertoire de téléchargement peut être indexé (par défaut :
false) - CUSTOM_DIRS : active ou non le téléchargement vers des répertoires personnalisés (par défaut :
true) - CREATE_CUSTOM_DIRS : indique si la création automatique de répertoires est prise en charge (par défaut :
true) - STATE_DIR : chemin de stockage des fichiers de persistance de la file d'attente (par défaut :
/downloads/.metube) - TEMP_DIR : chemin de stockage des fichiers de téléchargement temporaires (par défaut :
/downloads) - DELETE_FILE_ON_TRASHCAN : indique si les fichiers supprimés depuis l'UI sont aussi supprimés sur le serveur (par défaut :
false) - URL_PREFIX : chemin de base du serveur web (par défaut :
/) - PUBLIC_HOST_URL : URL de base des liens de téléchargement affichés dans l'UI
- PUBLIC_HOST_AUDIO_URL : URL de base des liens de téléchargement audio
- OUTPUT_TEMPLATE : modèle de nom de fichier téléchargé (par défaut :
%(title)s.%(ext)s) - OUTPUT_TEMPLATE_CHAPTER : modèle de nom de fichier pour les vidéos découpées en chapitres (par défaut :
%(title)s - %(section_number)s %(section_title)s.%(ext)s) - YTDL_OPTIONS : options supplémentaires à transmettre à youtube-dl (au format JSON)
- YTDL_OPTIONS_FILE : chemin du fichier JSON servant à renseigner
YTDL_OPTIONS
Utilisation des cookies du navigateur
-
À ajouter dans docker-compose.yml
volumes: - /path/to/cookies:/cookies environment: - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} -
Installer une extension d'extraction des cookies
- Firefox
- Chrome
Extensions de navigateur
- Chrome : installation possible depuis le Google Chrome Webstore
- Firefox : installation possible depuis Firefox Addons
Raccourci iOS
- Raccourci iOS : envoie une URL depuis Safari vers MeTube
- Saisie requise de l'adresse du serveur et du port
Compatibilité iOS
- Exigences des fichiers vidéo iOS : codec vidéo h264 ou h265 et codec audio aac requis
- Lors d'un téléchargement au format MP4, l'option "Best (iOS)" peut être sélectionnée
Bookmarklet
- Bookmarklet Chrome : envoie la page web actuellement ouverte vers MeTube
- Un proxy inverse HTTPS est nécessaire en cas d'utilisation sur une page HTTPS
Exécution derrière un proxy inverse
-
Exemple de configuration NGINX
location /metube/ { proxy_pass http://metube:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } -
Exemple de configuration Apache
<Location /metube/> ProxyPass http://localhost:8081/ retry=0 timeout=30 ProxyPassReverse http://localhost:8081/ </Location> <Location /metube/socket.io> RewriteEngine On RewriteCond %{QUERY_STRING} transport=websocket [NC] RewriteRule /(.*) ws://localhost:8081/socket.io/$1 [P,L] ProxyPass http://localhost:8081/socket.io retry=0 timeout=30 ProxyPassReverse http://localhost:8081/socket.io </Location> -
Exemple de configuration Caddy
example.com { route /metube/* { uri strip_prefix metube reverse_proxy metube:8081 } }
Mise à jour de yt-dlp
- Builds nightly automatiques : si une nouvelle version de yt-dlp est disponible, le build est lancé automatiquement et l'image Docker est mise à jour
- Installation et configuration de watchtower recommandées
Dépannage et soumission d'issues
- MeTube est l'UI de yt-dlp : ne pas soumettre au projet MeTube les problèmes liés à yt-dlp
- Utilisation directe de la commande yt-dlp recommandée : tester d'abord les options puis les appliquer à
YTDL_OPTIONS
Build et exécution en local
-
Outils requis : node.js et Python 3.11
cd metube/ui npm install node_modules/.bin/ng build cd .. pip3 install pipenv pipenv install pipenv run python3 app/main.py -
Build local de l'image Docker
docker build -t metube .
Notes de développement
- Fonctionne sous Windows, macOS et Linux
- Lors de l'exécution du serveur dans VSCode, le dossier de téléchargement est le dossier Downloads de l'utilisateur
Résumé de GN⁺
- MeTube est l'interface web de youtube-dl et permet de télécharger des vidéos depuis de nombreux sites
- Il peut être déployé et configuré facilement avec Docker, avec de nombreuses variables d'environnement pour la personnalisation
- Les extensions de navigateur et les raccourcis iOS permettent de télécharger des vidéos plus facilement
- La dernière version de yt-dlp est maintenue à jour automatiquement
- Parmi les projets offrant des fonctionnalités similaires, on trouve JDownloader et Video DownloadHelper
1 commentaires
Avis sur Hacker News
Tube Archivist est utile pour archiver et indexer des chaînes techniques
Quelqu'un aimerait une fonctionnalité de type TiVo pour YouTube
Quelqu'un envisage de créer une application simple avec yt-dlp
Ce serait bien d'avoir une interface intégrée à Jellyfin
Quelqu'un trouve étonnant qu'il existe autant d'outils de mirroring YouTube
Un serveur basé sur yt-dlp pourrait devenir populaire s'il était packagé avec une image simple et une application cliente frontend, à la manière de PiHole
Quelqu'un utilise TubeSync
Quelqu'un utilise Cobalt.tools
Quelqu'un télécharge les vidéos ajoutées à une playlist et les stocke sur un serveur Plex partagé
Outil connexe : Yark: YouTube Archiver with Offline UI