Telegram, también es un gestor de descargas

Para todas esas veces que queremos descargar algo y no estamos en casa vamos a utilizar telegram como gestor de descargas. Permitiremos descargas directas y también la posibilidad de añadir magnets links para descargar con transmission.

Para ello vamos a usar telegram-cli. No usamos ningún bot porque la api limita la descarga a 20MB.

En primer lugar necesitamos descargar telegram-cli, al cual le he realizado una pequeña modificación para descargar los ficheros con su nombre. (La versión de vysheng, descarga los ficheros poniendo como nombre el id, poco identificativo para nuestro caso)

Empezamos instalando las dependencias necesarias que podemos ver aquí:
https://github.com/Goty/tg#linux-and-bsds

En mi caso como es debian:

Clonamos el repositorio:

Compilamos:

El siguiente paso es descargar el script en lua que nos permitirá gestionar las descargas:

downloads.lua

Necesitamos modificar los dos primeras líneas:

Para localizar el id del usuario al que queremos permitir el acceso, basta con ejecutar telegram con el script que acabamos de descargar y escribirnos un mensaje: (En el primer arranque nos solicitará el número de teléfono)

El siguiente paso es indicar donde queremos guardar las descargas directas. Para esto editaremos el fichero $HOME/.telegram-cli/config y añadiremos la siguiente línea:

Creamos un enlace para tener acceso rápido a telegram desde el prompt

Para que arranque en cada reinicio utilizamos el siguiente script telegram_script.sh: (Lo hacemos ejecutable: chmod +x telegram_script.sh)

y finalmente lo añadimos a /etc/rc.local

 

ya tenemos nuestro gestor de descargas con telegram 😉

Para utilizarlo, simplemente hablamos con nosotros mismos y antes de la descarga mandamos el comando, en mi caso: Download:

telegram telegram2

Las pruebas están hechas en una odroid-c1 y una imagen de debian jessie

Tweet about this on TwitterShare on FacebookShare on Google+Email this to someone

También te podría gustar...

7 Respuestas

  1. Jose Berron dice:

    Buenas

    Tras probar tu script (que sincerament es la leche, no sabia que podia hacer esto) he encontra un fallo por el cual no me descarba ficheros. Siempre que añadia un fichero adjunto daba un error de cadena nula. Este error es ocasionado porque en un adjunto no tiene mensaje. El tema es que daba error y se salia del bucle y no ejecutaba la descarga. He realizaod una pequeña modificación, no controlo mucho de Python por lo que he hecho lo que he podido, pero al menos funciona.

    he cambiado esto:

    if string.find(msg.text, “magnet”) then
    os.execute(‘transmission-cli ‘..msg.text)
    end

    if msg.media then
    if msg.media.type == ‘document’ then
    load_document(msg.id, cb_ok, msg.id)
    end
    if msg.media.type == ‘photo’ then
    load_photo(msg.id, cb_ok, msg.id)
    end
    if msg.media.type == ‘video’ then
    load_video(msg.id, cb_ok, msg.id)
    end
    if msg.media.type == ‘audio’ then
    load_audio(msg.id, cb_ok, msg.id)
    end
    end

    Por esto

    if msg.media then
    if msg.media.type == ‘document’ then
    load_document(msg.id, cb_ok, msg.id)
    end
    if msg.media.type == ‘photo’ then
    load_photo(msg.id, cb_ok, msg.id)
    end
    if msg.media.type == ‘video’ then
    load_video(msg.id, cb_ok, msg.id)
    end
    if msg.media.type == ‘audio’ then
    load_audio(msg.id, cb_ok, msg.id)
    end
    else
    if string.find(msg.text, “magnet”) then
    os.execute(‘transmission-cli ‘..msg.text)
    end
    end

    Como te digo no soy ningun experto pero al realizar así la comprobacion funciona perfecto con cualquier adjunto que puedas envias al telegram

    Muchas gracias por tu idea

    Saludetes

  2. Pepe dice:

    Buenas tío.

    Primero darte las gracias por el estupendo manual.

    Soy un novato en Linux pero me lanzado a seguir tu manual.

    El tema es que al principio no me descargaba, pero podía ver en un terminal mis conversaciones de telegram y como monitorizaba para ver si le mandaba el comando para descargar. Luego he tocado lo que sea que lo he parado y ahora no se arrancarlo…

    He reiniciado, pero no sé si me ha arrancado.

    Si ejecuto:
    Ubuntu16:~/tg# sh telegram_script.sh
    Me devuelve:
    telegram_script.sh: 8: telegram_script.sh: telegram: not found

    Y descargar no descarga porque me voy a la carpeta donde le dije que guardara y no me crea nada…
    Bueno, decirte que lo estoy instalando en un contenedor (CT) de Proxmox donde tengo virtualizado Ubuntu 16.04 sin escritorio.
    Podrías orientarme un poco?

    Gracias.

    • Santi dice:

      Buenas! Al parecer no te encuentra el comando telegram.
      Hiciste bien esta parte? ln -s /home/pi/tg/bin/telegram-cli /usr/bin/telegram
      siendo “/home/pi/tg/bin/telegram-cli” la ruta hasta el binario.

      Para hacer pruebas a mano siempre puedes ir al directorio donde está telegram y ejecutar:
      ./bin/telegram-cli -s downloads.lua (teniendo el script downloads.lua en el mismo directorio)

  3. Hannibal1986 dice:

    Las descargas con este metodo nose por que son muy lentas, a unos 200kb/s a que puede ser debido?

    • Santi dice:

      Pues parece un fallo en la implementación de telegram-cli. La API oficial limitaba las descargas a 20 MB por eso lo hice de esta manera. Al parecer hay alguna otra API que permite descargar los 1,5Gb que permite telegram, y es posible que exista algún bot para tal uso.

  4. Gark dice:

    Hola. Asi que telegram si “me reenvio” cualquier archivo o link lo “autodescarga”? Que limite tiene (Mb o GB)?
    He leido que la API esta limitada a 20 Mb?
    Tengo una RPi i me gustaria poder tener el telegram para descargar cosas, por ejemplo, reenviarme algun capitulo de una serie (de algun canal telegram, que pueden pesar entre 500 Mb-1Gb)..
    Entiendo que si “hablo conmigo” le envio el comando “download” y seguidamente reenvio el archivo (reenviar desde el canal telegram de series por ejemplo), la RPi descargaria ?
    automaticamente ese archivo donde le diga?
    Gracias!

Deja un comentario

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