Sign inSign up

dgongut/dropbot

By dgongut

•Updated 6 days ago

Descarga archivos desde Telegram a tu servidor

Image
1

100K+

dgongut/dropbot repository overview

⁠dropbot

Docker Pulls Docker Stars Docker Image Size Github stars Github forks Github last-commit Github license

ReadMe en Español | ReadMe in English⁠

dropbot

Descarga archivos directamente en tu servidor a su carpeta correspondiente

  • ✅ Mándale un fichero y lo guarda en su carpeta: vídeo, audio (también notas de voz), fotos, torrents, libros o el resto
  • ✅ Mándale un enlace de YouTube, Instagram, TikTok, Twitter y 1800+ sitios más y descarga el vídeo o el audio
  • ✅ Los enlaces directos a un fichero (un PDF, un ZIP...) se descargan tal cual
  • ✅ Elige la calidad de lo que bajas de un enlace: resolución máxima, MP3 o M4A sin recodificar, y título, artista y carátula dentro del audio
  • ✅ Quita patrocinios y autopromoción de los vídeos de YouTube con SponsorBlock
  • ✅ Playlists enteras o solo el primer vídeo, con un tope de vídeos y un tamaño máximo por descarga
  • ✅ Te devuelve a Telegram lo descargado, convertido solo si Telegram no puede reproducirlo, y con aceleración por hardware (VAAPI, NVENC, QSV)
  • ✅ Transferencias rápidas con varias conexiones por fichero
  • ✅ /list y /manage para ver, renombrar, borrar, descomprimir (zip, tar y rar) y reenviar a Telegram lo que hay en el servidor
  • ✅ Todo se ajusta desde el propio bot con /settings, sin tocar el docker-compose ni reiniciar
  • ✅ Cada tipo de fichero a su carpeta con solo montarla
  • ✅ Español e inglés

¿Buscas el código, las incidencias o el changelog? Están en GitHub⁠.

🖼️ Si deseas establecerle el icono al bot de telegram, te dejo aquí⁠ el icono en alta resolución. Solo tienes que descargarlo y mandárselo al @BotFather en la opción de BotPic.

⁠Puesta en marcha

services:
  dropbot:
    environment:
      - TELEGRAM_TOKEN=
      - TELEGRAM_ADMIN=
      - TELEGRAM_API_HASH=
      - TELEGRAM_API_ID=
    volumes:
      - /ruta/para/la/configuracion:/config
      - /ruta/para/descargar/general:/downloads
    image: dgongut/dropbot:latest
    container_name: dropbot
    restart: always
    network_mode: host
docker compose up -d

Abre Telegram, envíale /start a tu bot y mándale un fichero o un enlace. Todo lo demás se ajusta desde /settings.

⚠️ Importante: Mapea siempre un volumen en /config: ahí se guardan los ajustes. Sin él se pierden al recrear el contenedor, y el bot te lo recuerda al arrancar.

CLAVEOBLIGATORIOVALOR
TELEGRAM_TOKEN✅Token del bot
TELEGRAM_ADMIN✅ChatId del administrador (se puede obtener hablándole al bot Rose escribiendo /id). Admite múltiples administradores separados por comas. Por ejemplo 12345,54431,55944
TELEGRAM_API_HASH✅Hash de la API de Telegram (obtenido al crear tu aplicación en https://my.telegram.org⁠)
TELEGRAM_API_ID✅ID de la API de Telegram (obtenido al crear tu aplicación en https://my.telegram.org⁠)
TELEMETRY❌false para desactivar las estadísticas anónimas sin pasar por /settings. Lo normal es desactivarlas desde /settings; esto es para quien prefiera dejarlo fijado en el compose

Aquí solo quedan las variables que el bot necesita antes de poder leer sus propios ajustes: cómo llegar a Telegram y quién puede hablarle. Si ponerla mal te puede dejar sin acceso al bot, va en el docker-compose, porque lo que impide que el chat funcione no se puede arreglar desde el chat.

⁠Comandos

COMANDOQUÉ HACE
/startSaludo y cómo se usa
/listLo que hay en el servidor, por categorías. /list video (o audio, photo, torrent, ebook) va directo a una
/manageLo mismo, pero cada elemento abre sus acciones: renombrar, borrar, descomprimir o enviarlo a Telegram
/settingsLos ajustes del bot
/versionLa versión instalada
/donate · /donorsCómo apoyar el proyecto, y quién lo ha apoyado ya

Para descargar no hace falta ningún comando: basta con mandarle el fichero o el enlace.

⁠Ajustes y más

⁠⚙️ Ajustes de /settings

Se guardan en settings.json, dentro de /config, y se aplican al momento, sin reiniciar el contenedor.

AJUSTEVALOR
IdiomaEspañol o English. Por defecto español
Enlaces → Descargar comoQué hacer al recibir un enlace: preguntar si quieres vídeo o audio (por defecto), o descargar siempre como vídeo o siempre como audio
Enlaces → Tras descargarQué hacer con lo descargado desde un enlace, incluidas las playlists completas: preguntar (por defecto), enviar y guardar, enviar y borrar del servidor, o solo guardar. No afecta a los ficheros que envías al bot desde Telegram. Los de más de 2 GB no caben en Telegram y se quedan solo en el servidor. En vídeos largos se sigue ofreciendo cancelar la conversión o enviar el original
Enlaces → Calidad → VídeoResolución máxima: máxima disponible (por defecto), 2160p, 1440p, 1080p, 720p, 480p o 360p. Cuenta el lado corto, así que un vídeo vertical de 1080×1920 es 1080p. Si un vídeo no tiene nada por debajo del límite se baja el más pequeño que haya
Enlaces → Calidad → Preferir compatible con TelegramPide el vídeo en H.264 y el audio en AAC, que Telegram reproduce tal cual: el vídeo se envía en segundos en vez de pasar por la conversión. Como YouTube no ofrece H.264 por encima de 1080p, con esto activo un vídeo 4K se baja en 1080p. Por defecto activado
Enlaces → Calidad → Formato del audioMP3 (por defecto) o M4A, que guarda el audio AAC tal como viene, sin recodificar: suena igual que el original, pesa menos y tarda menos
Enlaces → Calidad → Calidad del MP3Estándar (~128 kbps, por defecto), alta (192 kbps) o máxima (~245 kbps). Solo con MP3
Enlaces → Calidad → Etiquetas y carátulaMete en el audio el título, el artista y la miniatura del vídeo como portada. Por defecto activado
Enlaces → PlaylistsAl recibir una playlist: preguntar si la quieres entera o solo el primer vídeo (por defecto), o hacer siempre lo mismo. Y un tope de vídeos al bajarla entera (10, 25, 50, 100 o 200; por defecto sin tope)
Enlaces → SponsorBlockQuita de los vídeos de YouTube los tramos marcados por la comunidad de SponsorBlock⁠: desactivado (por defecto), patrocinios, patrocinios y autopromoción, o todo lo que no es contenido (también intros, despedidas, avances, relleno y lo que no es música en los vídeos musicales)
Enlaces → Tamaño máximoLo que pase de este tamaño no se descarga, y el bot te lo dice: 512 MB, 1, 2, 5 o 10 GB, o sin límite (por defecto). En una playlist se salta ese vídeo y se sigue con el resto
Descargas simultáneasFicheros que se transfieren a la vez. Por defecto 2
Conexiones por ficheroConexiones paralelas por fichero para acelerar la transferencia (estilo FastTelethon). 1 = método estándar de Telethon. Recomendado 4-8. Por defecto 8
Conversión de vídeo → EncoderCPU (libx264, por defecto), VAAPI (Intel/AMD, recomendado), NVENC (NVIDIA) o QSV (Intel Quick Sync, experimental: necesita el runtime de Intel y no viene en la imagen). Si el encoder hardware falla, se reintenta automáticamente con libx264. Ver desplegable de aceleración por hardware
Conversión de vídeo → CalidadEntre las que ofrece el menú (18-35), o la predeterminada de cada encoder (por defecto). Valores más altos reducen calidad y tamaño. 23 es un buen valor inicial
Tras descomprimirQué hacer con el fichero comprimido después de descomprimirlo desde /manage: preguntar (por defecto), borrarlo (con todas sus partes, si es un RAR multiparte) o conservarlo
Carpetas propiasSolo lectura: dónde va cada tipo de fichero. Ver desplegable de carpetas
Estadísticas anónimasUna vez al día envía cifras anónimas de uso. Por defecto activado. Ver desplegable de estadísticas
⁠📁 Cada tipo de fichero en su carpeta

Todo va a /downloads salvo que montes la carpeta de un tipo: entonces va ahí. No hay que activar nada más.

CARPETAQUÉ VA AHÍ
/videoVídeos
/audioAudios
/photoImágenes
/torrentFicheros .torrent
/ebookLibros electrónicos
/url_videoVídeos descargados desde enlaces. Si no la montas, van donde el resto de vídeos
/url_audioAudios descargados desde enlaces. Si no la montas, van donde el resto de audios
    volumes:
      - /ruta/para/la/configuracion:/config
      - /ruta/para/descargar/general:/downloads
      - /ruta/para/descargar/video:/video
      - /ruta/para/descargar/audio:/audio

En /settings → 📁 Carpetas propias ves a dónde está yendo cada tipo, y en /list y /manage cada tipo con carpeta propia sale como una categoría aparte.

⁠🎞️ Conversión de vídeo y aceleración por hardware

Solo se convierte lo que Telegram no puede reproducir. Un MP4 con vídeo H.264 (8 bits) o HEVC (8/10 bits, lo que graban los móviles) y audio AAC/MP3 se envía tal cual; si el vídeo ya vale pero el contenedor (MKV, MOV...), el audio (Opus...) o la etiqueta HEVC (hev1 en vez de hvc1, que necesitan los dispositivos Apple) no, se copia la pista de vídeo sin recodificar y la operación tarda segundos. Solo VP9, AV1 y similares pasan por la conversión completa, que por CPU da siempre H.264 4:2:0 de 8 bits, lo único que Telegram reproduce en todos sus clientes.

Lo que descargas de enlaces se pide por defecto en H.264 y AAC (ver Preferir compatible con Telegram en los ajustes), así que normalmente ni siquiera hace falta convertirlo.

La conversión completa va por CPU salvo que elijas otro encoder en /settings → 🎞️ Conversión de vídeo. Para usar la GPU, dale al contenedor acceso a ella:

    # Para VAAPI/QSV, da acceso al dispositivo `/dev/dri`:
    devices:
      - /dev/dri:/dev/dri
    # Para NVENC necesitas NVIDIA Container Toolkit y dar acceso a la GPU:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

Puedes comprobar qué encoder se está usando en los logs ([CONVERSION] Encoder mode: ...). Si el encoder por hardware falla con un vídeo, se reintenta automáticamente por CPU.

⁠🍪 Cookies opcionales para yt-dlp

Para sitios que requieren una sesión autenticada, crea cookies/cookies.txt y monta la carpeta en /app/cookies. El volumen debe ser escribible porque yt-dlp puede actualizar el cookie jar. Si el fichero no existe, DropBot continúa usando yt-dlp sin cookies.

    volumes:
      - /ruta/para/cookies:/app/cookies
⁠🔄 ¿Vienes de la 3.x? No pierdes nada
  • En el primer arranque el bot importa a settings.json los valores de tus variables (LANGUAGE, PARALLEL_DOWNLOADS, FAST_CONNECTIONS, AUTO_DOWNLOAD_FORMAT, AUTO_SEND, FFMPEG_HW y FFMPEG_QUALITY) y los conserva tal cual. A partir de ahí manda /settings, y esas variables ya no se leen: el log te avisa de las que puedes borrar del docker-compose.
  • Añade el volumen /config. Sin él la importación se repite en cada recreación del contenedor y lo que cambies en /settings no se guarda.
  • Los FILTER_* ya no hacen falta. Antes había que montar la carpeta y además activar su variable; ahora basta con montarla. Si tenías FILTER_VIDEO=1 y /video montada, todo sigue igual. Si tenías un FILTER_*=1 sin montar su carpeta, esos ficheros se guardaban dentro del contenedor y se perdían al actualizar: ahora van a /downloads.
  • Un valor no válido en una de esas variables ya no impide arrancar: se ignora con un aviso en el log y se usa el valor por defecto, que puedes corregir desde /settings.
  • Lo que descargas de enlaces ahora se pide por defecto en H.264 y AAC, que Telegram reproduce sin convertir. Se envía mucho antes, pero un vídeo 4K de YouTube llega en 1080p. Si prefieres lo de antes, desactiva Preferir compatible con Telegram en /settings → Enlaces → Calidad.
  • Los enlaces a páginas web (.html) ya no se descargan como si fueran un fichero: pasan por yt-dlp como cualquier otro enlace.
  • tty: true no hace falta. Puedes quitarlo, o dejarlo: no molesta.
⁠📊 Estadísticas anónimas

Desde la 4.0.0 el bot envía una vez al día unas cifras anónimas para saber cuánta gente lo usa y qué funciones se usan más. Así sé dónde poner el esfuerzo. Las estadísticas son públicas: stats.dgongut.com/dropbot⁠.

Qué se envía: qué ajustes están activados, qué tipos de fichero tienen carpeta propia (sí o no, nunca la ruta), si hay cookies o GPU disponibles, la versión del bot, la arquitectura, y cuántas veces al día se ha usado cada comando, cada botón y cada tipo de descarga y de conversión. La lista completa, campo a campo, está en la página de privacidad⁠. El servidor descarta cualquier dato que no esté en ella.

Qué no se envía nunca: nombres de ficheros, enlaces, rutas, IDs de Telegram ni nada de lo que escribes. Tu IP no se guarda.

Cómo se desactiva: desde /settings → Estadísticas anónimas, o con TELEMETRY=false. Al desactivarlas se borra también el identificador de la instalación. Con 👀 Ver qué se envía ves exactamente lo que llevaría el próximo envío.

Están activadas por defecto. Nada se envía hasta que el bot lleva al menos 10 minutos en marcha. Tampoco se envía si /config no está en un volumen, porque sin él cada vez que se recreara el contenedor contaría como una instalación nueva.


¿Quieres ejecutarlo con código local o pasar los tests? Lo tienes en el README de GitHub⁠.

Tag summary

Content type

Image

Digest

sha256:1becb9d2c…

Size

359.4 MB

Last updated

6 days ago

docker pull dgongut/dropbot