TomoNota

Hola a todos.
En esta entrada veremos como descargar archivos directamente en Synology mediante “Telegram”, con tal solo enviarlos a un bot o a un grupo, dependiendo de cómo queramos usarlo, fácil y rápido.

Sitio oficial “rodriguezst/telethon_downloader”

Como bien indica en GitHub:

  • Generar claves API de Telegram:
    1. Ir a https://my.telegram.org allí iniciaremos sesión con nuestro número de teléfono, nos enviará un mensaje (mediante Telegram) con un código.
    2. Ir a API Development tools.
    3.Nos aparecerá para crear una nueva aplicación. Completamos los detalles de título y nombre corto, (que podremos cambiar más adelante).
    4.Le daremos a crear y guardaremos “api_id” y “api_hash” (no publiques en ningún lado esta información, es secreta!
  • Creación del bot:
    1. Abrimos una nueva conversación con @BotFather (el padre de todos los bots).
    2. Utilizaremos el comando “/newbot” para crear un nuevo bot, seguidamente nos pedirá un nombre para el bot, por ejemplo “Pedrito” y luego nos pedirá el nombre de usuario, por ejemplo “Pedrito_bot”.
    Seguidamente nos dirá el token (una cadena de números) similar a 110201543: AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw, también hay que mantener segura esta información, sino cualquiera puede usarlo para controlar su bot.
  • Carpeta de descarga en nuestro Synology:

1. Elegimos o creamos una carpeta donde queramos que se hagan las descargas y le daremos permisos de lectura y escritura a todos:

2. Abrimos docker (sino tenemos Docker, lo descargamos y instalamos desde “Centro de paquetes”) y nos vamos a “Registro” donde buscaremos:
“rodriguezst/telethon_downloader”
Descargamos la imagen y se descargará en la pestaña de “Imagen”, allí podemos instalarla (con un par de clics), se nos abrirá la opción de crear el contenedor y iremos a “configuración avanzada”:

-En la primera pestaña podremos habilitar el reinicio automático.

-En la pestaña de “Volumen” agregar carpeta y añadimos la ruta.

-En la pestaña de Medio ambiente, es donde van las siguientes variables que nos indicaba en la web de GitHub que más abajo se explican.
Vemos el ejemplo, en este caso añado las necesarias:

Datos de las variables de su web original:
TG_API_ID : <clave API de telegram generada en ´Generating Telegram API keys´>
TG_API_HASH : <hash de la API de telegram generado en ´Generating Telegram API keys´>
TG_BOT_TOKEN : <token de telegrama BOT generado en ´Creating a Telegram Bot´>
TG_MAX_PARALLEL [OPCIONAL]: <número máximo de descargas paralelas permitidas (predeterminado: 4)>
TG_DL_TIMEOUT [OPCIONAL]: <tiempo máximo (en segundos) para esperar a que se complete una descarga. 
después de este tiempo, la descarga se cancela y se activa un error (predeterminado: 3600)>
NOTA: LOS ARCHIVOS DESCARGADOS SE GUARDAN EN UN DIRECTORIO DE TMP HASTA QUE LA DESCARGA SE COMPLETA PARA PROTEGER EL MOVIMIENTO DE ARCHIVOS SIN TERMINAR
TG_DOWNLOAD_PATH : <carpeta de descarga dentro del contenedor de la 
ventana acoplable donde se descargarán los archivos (ruta completa)>

Al aplicar cambios, se cargará en la pestaña de “Contenedor”, puede llevar unos segundos y al finalizar podremos encender el contenedor mediante el botón de su derecha:

Ya podremos ir a Telegram, enviarle un archivo y automáticamente lo descargará en la carpeta que hemos seleccionado.

(Gif original de Github)
*Hay que enviarlo todo como adjunto archivo y el bot se encargará de todo.
  • ¿Y si queremos añadir el bot a un grupo y que se encargue él de hacer las descargas correspondientes?

    Tendremos que habilitar al bot para que pueda tener acceso a los mensajes:
    1 – Iremos a @Botfather y escribimos el comando /mybots.
    2 – Pulsamos sobre el botón del bot que acabamos de crear.
    3 – Seleccionarmeos “Bot settings” .
    4- En Group Privacy” pulsaremos sobre “Turn off”.

Con esto, nuestro bot ya funcionará si lo añadimos a cualquier grupo.

Espero que os guste.
Un saludo a tod@s.

21 comentarios

  1. Impresionante el post. Lo he intentado y, aunque el Telegram lo domino un poco, el Synology lo he puesto en marcha hace unos días, pues… no me aclaro. En todo caso retendré esta información para dentro de unos días cuando controle más el NAS intentarlo de nuevo. Te los has currado!!! Buen, buen trabajo.

  2. Buenas, muchísimas gracias por el post.
    Yo no he conseguido que funcione quizás por la atualización del DSM

    Baásicamente tengo que meter los id (bot y hash) a mano (mediante el terminal del contenedor) y luego me da errror de acceso al tmp.

    Un saludo

    jopacer

  3. Hola, muchas gracias por el tutorial!
    He seguido los pasos en DSM7 y al arrancar el contenedor me da el siguiente fallo de permisos:

    PermissionError: [Errno 13] Permission denied: ‘/volumen1/Descargas/tmp’

    La carpeta de descargas tiene todos los permisos activados para todos los usuarios. Se os ocurre por donde pueden ir los tiros? Puede ser cosa del nuevo DSM7?

    Gracias de antemano y un saludo!

  4. Muchas gracias por el tutorial. Me ha funcionado a la perfección.
    Únicamente me ha pasado para archivos muy grandes que me lance el siguiente error:

    ERROR: Exception TimeoutError raised downloading this file: A timeout occurred while fetching data from the worker (caused by GetFileRequest)

    Si tenéis idea de por dónde puede ir el fallo lo agradezco

    1. Hola Javier, muchas gracias.
      En algunos archivos si que es verdad que pasa, me pasa igual, de vez en cuando hay archivos que dan error, yo suelo reenviarlo otra vez y si da error, lo único que queda es descargarlo manualmente porque por lo que he probado desde el pc con el mismo archivo no me da el error.
      Un saludo.

  5. Una pena que no me funcione Docker en mi Synology DS218j, no tengo forma de hacerlo funcionar y mira que estaba interesado en este método para poder descargar en el NAS directamente desde Telegram!
    Porque no hay forma de poner Docker, ¿verdad?

  6. Gracias por el tutorial de antemano, tiene pinta de útil. Al probarlo a descargar un vídeo multimedia que no lo han enviado como archivo, duración 1h y peso en torno a 1GB, no descarga ni notifica nada, he probado a ponerle un archivo de un vídeo que he grabado con la cámara, enviado en modo archivo y lo descarga perfectamente, he probado con una foto enviada como foto y no como archivo y no la descarga, por lo que entiendo que sólo descarga lo que esté subido en los servidores de Telegram como archivo. ¿es posible cambiar ésto?

  7. Si bien el alias del bot alguien lo localiza con la lupa de Telegram y envía archivos, se descargarán en el Nas, he hecho pruebas con un familiar y así es ¿hay forma de limitar que quien pueda usarlo sea únicamente el owner?

    1. Hola Gosnel.
      El bot descargará lo que se le envíe, pero tampoco hay mucha gente que envíe archivos a cualquier bot, podría pasar, pero no es lo habitual.
      Pero tranquilo, existe la manera sin modificar código, puedes ver el ejemplo en otro post:

      *En este necesitas la id para que descargue los archivos, sino está respirado no hace caso de los mensajes.

      Un saludo.

  8. Hola.
    ¡Gracias por el tutorial!
    Creo haberlo hecho todo correctamente (aunque los permisos de Everyone no los veo, he dado permisos a todos los usuarios en la carpeta compartida y a Invitado).
    Tengo el error que os sale a todos con el DSM7 (donde no encuentro grupo Everyone, pero sí doy permisos a todo):
    Traceback (most recent call last):
    File “/app/tg_downloader.py”, line 48, in
    os.makedirs(tmp_path, exist_ok=True)
    File “/usr/lib/python3.6/os.py”, line 220, in makedirs
    mkdir(name, mode)
    PermissionError: [Errno 13] Permission denied: ‘/volume1/Telegram/tmp’

    He probado a crear el tmp con 777+, pero nada…

  9. Vale, ¡¡lo he conseguido para DSM7!!

    En la configuración de la carpeta compartida, en Permisos (no en Permisos Avanzados), hay que pinchar en el cuadro check de cualquier usuario que lo tenga habilitado (si se han asignado ya permisos, estará deshabilitado).
    Cuando se abra la nueva ventana, estará seleccionado en la lista de arriba a la derecha por defecto el usuario sobre el que se ha pulsado, pero si abrimos la lista, ahí ya sí que sale el grupo Everyone y se le puede ya asignar permisos.
    Una vez hecho esto, aparecerá en la lista.

Responder a Gosnel Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *