MeTube: programa autoalojado para descargar YouTube
(github.com/alexta69)-
Fin del soporte para compilaciones ARM de 32 bits
- Las nuevas versiones de Node ya no soportan ARM de 32 bits
- Por actualizaciones de seguridad y problemas de dependencias, se requiere migrar a un SO de 64 bits
-
Introducción a MeTube
- GUI web de youtube-dl (usa un fork de yt-dlp)
- Soporta descarga de videos desde YouTube y varios otros sitios
Ejecutar con Docker
-
Comando de Docker
docker run -d -p 8081:8081 -v /path/to/downloads:/downloads ghcr.io/alexta69/metube -
Ejemplo de 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
Configuración con variables de entorno
- UID: ID del usuario con el que se ejecutará MeTube (predeterminado: 1000)
- GID: ID del grupo con el que se ejecutará MeTube (predeterminado: 1000)
- UMASK: valor de umask (predeterminado: 022)
- DEFAULT_THEME: tema predeterminado (
light,dark,auto, predeterminado:auto) - DOWNLOAD_DIR: ruta donde se guardan las descargas (predeterminado:
/downloads) - AUDIO_DOWNLOAD_DIR: ruta donde se guardan las descargas de solo audio (predeterminado:
DOWNLOAD_DIR) - DOWNLOAD_DIRS_INDEXABLE: si el directorio de descargas puede indexarse (predeterminado:
false) - CUSTOM_DIRS: si se habilitan las descargas en directorios personalizados (predeterminado:
true) - CREATE_CUSTOM_DIRS: si se permite crear directorios automáticamente (predeterminado:
true) - STATE_DIR: ruta donde se guardan los archivos de persistencia de la cola (predeterminado:
/downloads/.metube) - TEMP_DIR: ruta donde se guardan los archivos temporales de descarga (predeterminado:
/downloads) - DELETE_FILE_ON_TRASHCAN: si los archivos eliminados desde la UI también se eliminan del servidor (predeterminado:
false) - URL_PREFIX: ruta base del servidor web (predeterminado:
/) - PUBLIC_HOST_URL: URL base de los enlaces de descarga mostrados en la UI
- PUBLIC_HOST_AUDIO_URL: URL base de los enlaces de descarga de audio
- OUTPUT_TEMPLATE: plantilla de nombre para los archivos descargados (predeterminado:
%(title)s.%(ext)s) - OUTPUT_TEMPLATE_CHAPTER: plantilla de nombre para archivos de video divididos por capítulos (predeterminado:
%(title)s - %(section_number)s %(section_title)s.%(ext)s) - YTDL_OPTIONS: opciones adicionales que se pasarán a youtube-dl (formato JSON)
- YTDL_OPTIONS_FILE: ruta a un archivo JSON para poblar
YTDL_OPTIONS
Uso de cookies del navegador
-
Agregar a docker-compose.yml
volumes: - /path/to/cookies:/cookies environment: - YTDL_OPTIONS={"cookiefile":"/cookies/cookies.txt"} -
Instalar una extensión para extraer cookies
- Firefox
- Chrome
Extensiones del navegador
- Chrome: disponible para instalar desde Google Chrome Webstore
- Firefox: disponible para instalar desde Firefox Addons
Atajo de iOS
- Atajo de iOS: envía una URL desde Safari a MeTube
- Se requiere ingresar la dirección y el puerto del servidor
Compatibilidad con iOS
- Requisitos de archivos de video en iOS: se requieren los códecs de video h264 o h265 y el códec de audio aac
- Al descargar en formato MP4 se puede elegir la opción "Best (iOS)"
Bookmarklet
- Bookmarklet de Chrome: envía la página web abierta actualmente a MeTube
- Si se usa en páginas HTTPS, se requiere un proxy inverso HTTPS
Ejecutar detrás de un proxy inverso
-
Ejemplo de configuración de 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; } -
Ejemplo de configuración de 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> -
Ejemplo de configuración de Caddy
example.com { route /metube/* { uri strip_prefix metube reverse_proxy metube:8081 } }
Actualizaciones de yt-dlp
- Compilación nocturna automática: si hay una nueva versión de yt-dlp, se compila automáticamente y se actualiza la imagen de Docker
- Se recomienda instalar y configurar watchtower
Solución de problemas y envío de issues
- MeTube es una UI para yt-dlp: no envíes al proyecto MeTube problemas relacionados con yt-dlp
- Se recomienda usar directamente el comando de yt-dlp: prueba las opciones y luego aplícalas en
YTDL_OPTIONS
Compilación y ejecución local
-
Herramientas necesarias: node.js y 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 -
Compilar la imagen de Docker localmente
docker build -t metube .
Notas de desarrollo
- Funciona en Windows, macOS y Linux
- Si ejecutas el servidor desde VSCode, la carpeta de descargas será la carpeta Downloads del usuario
Resumen de GN⁺
- MeTube es una GUI web de youtube-dl que ofrece la capacidad de descargar videos desde varios sitios
- Puede desplegarse y configurarse fácilmente con Docker, y permite personalización mediante diversas variables de entorno
- Permite descargar videos cómodamente mediante extensiones del navegador y atajos de iOS
- Mantiene siempre la versión más reciente al actualizar automáticamente a la última versión de yt-dlp
- Entre los proyectos con funciones similares están JDownloader y Video DownloadHelper
1 comentarios
Opiniones de Hacker News
Tube Archivist es útil para archivar e indexar canales técnicos
Quieren algo como un TiVo para YouTube
Están pensando en hacer una app sencilla usando yt-dlp
Estaría bien tener una interfaz que se integre con Jellyfin
Les parece curioso que haya tantas herramientas para hacer mirroring de YouTube
Un servidor basado en yt-dlp podría volverse popular si viniera empaquetado como PiHole, con una imagen sencilla y una app cliente frontend
Están usando TubeSync
Están usando Cobalt.tools
Descargan videos que agregaron a playlists y los guardan en un servidor compartido de Plex
Como herramienta relacionada está Yark: YouTube Archiver with Offline UI