Skip to content

Repository files navigation

dHtools Logo

⚡ dHtools - Suite Multimedia & Extractor Universal

Release Python Docker Cafecito License

dHtools es una suite web autohospedable y de alto rendimiento diseñada para la extracción, conversión, recorte y sincronización en la nube de contenido multimedia desde múltiples plataformas (YouTube, Spotify, Deezer, TikTok, Instagram, Twitter/X, Twitch, Facebook y más).

Está construida sobre una arquitectura modular de Flask Blueprints, pensada para desplegarse fácilmente en tu propio servidor VPS o máquina local con Docker Compose. Cuenta con una interfaz moderna y reactiva con optimización móvil táctil, gestión multiusuario, autenticación de dos factores (2FA / TOTP), cuotas de disco, túnel residencial contra bloqueos, almacenamiento S3/Cloud con modo Offload, asistente de Telegram autónomo, selector de canal de actualizaciones (main vs dev) y rollback automático en 1 clic.


🚀 Características Principales

🎯 Extracción Multiplataforma Inteligente

  • Motor en Cascada Inteligente (4 Niveles): Combina de manera transparente Cobalt v11 Oficial, SpotDL / Deezer nativo, yt-dlp core y un Túnel Residencial de Contingencia (Tier 4 / Failsafe).
  • Evasión Antibot & Tokens PO: Microservicio pot-provider estabilizado junto al runtime Deno para resolver desafíos JavaScript y generar tokens Proof-of-Origin automáticos.
  • Túnel Residencial de Respaldo (SOCKS5 / MikroTik): Activación automática en caso de bloqueos por IP de datacenter o degradación SABR a 360p, preservando el ancho de banda residencial con telemetría de latencia RTT por ping TCP.
  • Calidades de Video Ultra HD: Descargas en 4K (2160p), 2K (1440p), Full HD (1080p), 720p y 480p con selección de contenedor (MP4 / MKV) y subtítulos incrustados.
  • Suite de Audio Hi-Fi: Extracción directa con carátulas en alta resolución y metadatos ID3 automáticos en calidades 128 kbps, 192 kbps, 256 kbps y 320 kbps (CBR MP3).
  • Playlists & Álbumes Completos: Detección de listas con inspección ítem por ítem, selección selectiva, reordenamiento interactivo (⬆️/⬇️) y descarga agrupada en carpetas virtuales o archivo .zip.
  • Recorte Preciso por Tiempo (Trimming): Descarga estricta por rangos temporales (download_ranges) indicando inicio y fin (HH:MM:SS), transfiriendo únicamente los minutos deseados sin descargar archivos completos a disco.
  • Doble Consola Interactiva: Terminal de actividad en tiempo real tanto en Modo Fácil como en Modo Avanzado para ver el estado de cada proceso, conversiones FFmpeg y eventos en vivo.
  • Descargas Unificadas en Lote: Conmutador directo [ 🔗 Enlace Único | 📋 Descarga en Lote ] integrado en ambos modos.

🛡️ Blindaje de Seguridad & Control de Accesos

  • Autenticación en Dos Factores (2FA / TOTP Opcional): Estándar RFC 6238 compatible con Google Authenticator, Microsoft Authenticator, Authy, Bitwarden, etc., con QR dinámico y 8 códigos de recuperación.
  • Gestión Multiusuario & Roles: Roles independientes (Admin y Downloader), cambio de credenciales, suspensión y purga selectiva.
  • Control Estricto de Cuotas de Disco: Asignación de cuotas máximas de almacenamiento por usuario con medidor en vivo y bloqueo preventivo.
  • Auditoría de Sesiones Activas: Monitor en tiempo real de sesiones conectadas (IP, dispositivo, navegador, última actividad) con revocación remota instantánea.
  • Servidor SMTP & Recuperación de Contraseñas: Envío de correos seguros con tokens de un solo uso con 1 hora de validez para restablecer credenciales.
  • Prevención de Ataques Web: Sanitización rigurosa de URLs (validate_media_url), ejecución de comandos segura sin shell=True, validación de rutas canónicas contra Path Traversal (safe_download_path) y protección por tarpit contra fuerza bruta.

☁️ Conectores Cloud Avanzados & Modo Offload

  • Soporte Universal de Almacenamiento: Compatible con Amazon S3, MinIO, Cloudflare R2, Backblaze B2, Wasabi, WebDAV (Nextcloud / ownCloud) y servidores FTP.
  • Modo Offload ("Subir y Mover"): Ahorro extremo de almacenamiento en servidores VPS pequeños; tras una subida exitosa a la nube, el archivo local se libera manteniendo el registro en "Mis Descargas" con la etiqueta ☁️ En la nube.
  • Presets Privados por Usuario: Cada usuario puede configurar y almacenar sus propios destinos de almacenamiento con prueba de conectividad en vivo.

📱 Experiencia Móvil & Diseño Adaptativo

  • Navegación Móvil Ergonómica: Barra de navegación inferior permanente (Bottom Nav Bar), menú lateral deslizable (Drawer) y barra superior compacta optimizada para pantallas táctiles.
  • 4 Temas Visuales: Selector interactivo de paletas: Cyberpunk, OLED Pure Black, Emerald y Light.
  • PWA Ready: Instalable como aplicación web progresiva en Android, iOS y PC de escritorio con manifiesto y suite completa de íconos.

🤖 Asistente Autónomo de Telegram

  • Despliegue Self-Hosted: Conexión directa mediante @BotFather configurando tu propio bot token en el panel de administración.
  • Comandos & Lenguaje Natural: Envío de enlaces para descarga interactiva con botones táctiles en línea, comandos /descargas, /cola, /cuota, /ayuda y soporte conversacional.
  • Privacidad Total: Cada usuario vinculado mediante token temporal accede estricta y exclusivamente a sus propios archivos.
  • Entrega Inmediata: Despacho directo del archivo al chat para tamaños de hasta 50 MB con fallback transparente a documento ante limitaciones de códec.

📦 Puesta en Marcha Rápida (Docker Compose)

1. Clonar el repositorio

git clone https://github.com/hernancussit/dHtools.git
cd dHtools

2. Configurar variables de entorno

cp .env.example .env
nano .env

Definí tus credenciales de acceso (APP_USERNAME y APP_PASSWORD) y tu clave secreta de sesión.

3. Iniciar los contenedores

docker compose up -d --build

La aplicación estará lista en http://localhost:5000 (o http://TU_IP_VPS:5000).


🌐 Publicación con Dominio & SSL (Proxy Inverso)

Para publicar dHtools bajo tu propio dominio con HTTPS, dispones de configuraciones listas en la carpeta proxy-configs/:

1. 🐧 Nginx Universal (Cualquier Servidor Linux / CloudPanel / aaPanel)

Utiliza la plantilla proxy-configs/nginx-universal.conf en tu bloque de servidor:

sudo cp proxy-configs/nginx-universal.conf /etc/nginx/sites-available/dhtools.conf
# Edita tu dominio y certificados en el archivo y luego recarga:
sudo systemctl reload nginx

2. 🛡️ HestiaCP

Copia las plantillas oficiales de HestiaCP y aplícalas a tu dominio:

cp proxy-configs/hestiacp/dhtools-proxy.tpl  /usr/local/hestia/data/templates/web/nginx/
cp proxy-configs/hestiacp/dhtools-proxy.stpl /usr/local/hestia/data/templates/web/nginx/
systemctl reload nginx

Luego selecciona la plantilla dhtools-proxy desde la configuración web del dominio en el panel de HestiaCP.

3. 💼 cPanel / WHM (Apache mod_proxy)

Copia las reglas de proxy-configs/cpanel-apache.conf en el archivo .htaccess de la raíz web de tu dominio.

4. 🚀 Caddy Server

Añade a tu Caddyfile (configuración de proxy-configs/caddy-Caddyfile):

tu-dominio.com {
    reverse_proxy 127.0.0.1:5000
}

Consulta la guía detallada en proxy-configs/README.md.


🍪 Configuración de Cookies de YouTube (Opcional / Avanzado)

dHtools cuenta con evasión antibot automática (pot-provider + Deno + Cobalt) y funciona sin cookies para el 95% de las descargas públicas. Sin embargo, si deseas descargar videos con restricción de edad (+18), contenido para miembros del canal o listas privadas, puedes suministrar un archivo cookies.txt.

⚠️ Reglas Críticas de Seguridad y Operación:

Warning

  1. Usá SIEMPRE una cuenta secundaria (desechable): NUNCA exportes cookies de tu cuenta de Google/YouTube principal. La actividad constante de descargas desde una IP de servidor puede gatillar bloqueos temporales o suspensiones de cuenta por parte de Google.
  2. NO utilices esa sesión en tu navegador tras exportarla: Una vez descargado el cookies.txt, no navegues con esa cuenta en tu navegador ni cierres sesión manualmente. El uso continuo en el navegador rota los tokens criptográficos de sesión de Google e invalida las cookies exportadas de inmediato.

📥 Paso a Paso: Cómo extraer tu cookies.txt

  1. Abre una ventana de incógnito en tu navegador (Chrome, Firefox, Brave o Edge).
  2. Entra a YouTube e inicia sesión con tu cuenta secundaria.
  3. Instala una extensión de exportación de cookies en formato Netscape estándar:
  4. Estando en la pestaña de YouTube, abre la extensión y haz clic en "Export" o "Descargar cookies.txt".
  5. Guarda el archivo .txt en tu computadora.

🚀 Cómo instalarlo en dHtools

  • Desde la Web (Recomendado):
    Ingresa al Panel de Administración (/admin) ➔ pestaña "⚙️ Parámetros & Cookies" ➔ haz clic en "Seleccionar nuevo cookies.txt" ➔ presiona "🚀 Validar y Guardar". El sistema validará automáticamente las cookies contra YouTube antes de guardarlas en el servidor.
  • Vía Terminal / Docker:
    Copia el archivo generado en la raíz del proyecto como cookies.txt y reinicia el contenedor (docker compose restart dhtools).

🌿 Canales de Actualización

Canal Rama Git Descripción
🟢 Estable main Versiones probadas y listas para producción en cualquier VPS.
🧪 Desarrollo dev Nuevas funciones experimentales y mejoras previas al lanzamiento.

☕ Apoyá el Proyecto

Si dHtools te resulta útil para gestionar tus descargas multimedia y administrar tu servidor, podés invitarme un cafecito para apoyar el desarrollo continuo y mantenimiento de nuevas funciones:

Invitame un café en cafecito.app

¡Muchas gracias por apoyar el software independiente y de código libre!


👤 Autor y Créditos


📄 Licencia

Este proyecto está bajo la Licencia MIT.

About

⚡ Suite multimedia autohospedable y extractor universal con motor en cascada (yt-dlp + Cobalt), audio Hi-Fi, playlists y proxy inverso.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages