Descargar archivos desde Telegram en Synology con Bot.torrent

Hola a tod@s!
En esta entrada veremos como descargar archivos desde telegram con un script de python llamado Bot.torrent que nos puede ser muy útil.

No es un post repetido, es otra manera de hacer las descargas desde telegram y la verdad que es ¡genial!

¿Que vamos a ver y aprender en este post?
– Como instalar python y el archivo correspondiente.
– Detalles del Bot.Torrent
– Ejecutarlo en Synology, ver si está ejecutándose y detenerlo.

Empezamos:
Lo primero será descargar el archivo Bot.torrent desde aquí, este link nos llevará al grupo de Telegram DekNet (el creador), donde podremos descargar la última versión, la que vamos a usar a fecha de hoy es la 3.2.

Al descargarlo debemos de abrirlo: ¿Y cómo vemos ese tipo de archivo?
Con un editor de código: Visual Studio es gratuito, (click para el link).
Con un simple editor de texto / bloc de notas.
*Una vez abierto vemos el código del programa y los pasos de instalación.

Pasos para su instalación: (puedes saltarte los pasos que no necesites ; )

  • 1: Crear nuestro BOT en Telegram y obtener su TOKEN:
    — Abrimos una nueva conversación con @BotFather (el padre de todos los bots).
    — 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.
  • 2: Crear nuestra App en Telegram y obtener su api_id y api_hash:
    — 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.
    — Ir a API Development tools.
    — Nos aparecerá para crear una nueva aplicación. Completamos los detalles de título y nombre corto, (que podremos cambiar más adelante).
    — Le daremos a crear y guardaremos “api_id” y “api_hash” (no publiques en ningún lado esta información, es secreta!
  • 3: Instalar python en nuestro NAS.
    (Python es un lenguaje de programación)
    Lo podemos instalar desde el “Centro de paquetes”:

  • 4: Instalar pip en nuestro NAS, abriendo una sesión SSH:
    (pip es un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python.)
    Tenemos que abrir sesión SSH (mediante terminal o por putty si tenemos windows) y poner los siguientes comandos:
    –> sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    –> sudo python3 get-pip.py
    veamos el ejemplo de ponerlo:
--Conectando por ssh desde terminal:
TomoNota ~ % ssh usuario@ip.del.synology -p 22 (o puerto que tengas)
usuario@ip.del.synology's password: 

---Primer comando:
TomoNota@Synology:~$ sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Password: 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1891k  100 1891k    0     0  2189k      0 --:--:-- --:--:-- --:--:-- 2189k

---Segundo comando:
TomoNota@Synology:~$ sudo python3 get-pip.py
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /var/packages/py3k/target/usr/local/include/python3.8/UNKNOWN
sysconfig: /var/packages/py3k/target/usr/local/include/python3.8
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Collecting pip
  Downloading pip-21.1-py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 3.8 MB/s 
Collecting setuptools
  Downloading setuptools-56.0.0-py3-none-any.whl (784 kB)
     |████████████████████████████████| 784 kB 11.6 MB/s 
Collecting wheel
  Downloading wheel-0.36.2-py2.py3-none-any.whl (35 kB)
Installing collected packages: wheel, setuptools, pip
  WARNING: The script wheel is installed in '/var/packages/py3k/target/usr/local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip, pip3 and pip3.8 are installed in '/var/packages/py3k/target/usr/local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /var/packages/py3k/target/usr/local/include/python3.8/UNKNOWN
sysconfig: /var/packages/py3k/target/usr/local/include/python3.8
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Successfully installed pip-21.1 setuptools-56.0.0 wheel-0.36.2
WARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
  • 5: Instalar telethon: (desde terminal o putty)
    (Es una biblioteca destinada a facilitar la escritura de programas Python para que puedan interactuar con Telegram). 
    Con el comando:
    –> sudo python3 -m pip install telethon
    *vemos el ejemplo de instalación:
TomoNota@Synology:~$ sudo python3 -m pip install telethon
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /var/packages/py3k/target/usr/local/include/python3.8/UNKNOWN
sysconfig: /var/packages/py3k/target/usr/local/include/python3.8
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Collecting telethon
  Downloading Telethon-1.21.1-py3-none-any.whl (515 kB)
     |████████████████████████████████| 515 kB 4.3 MB/s 
Collecting rsa
  Downloading rsa-4.7.2-py3-none-any.whl (34 kB)
Collecting pyaes
  Downloading pyaes-1.6.1.tar.gz (28 kB)
Collecting pyasn1>=0.1.3
  Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
     |████████████████████████████████| 77 kB 169 kB/s 
Building wheels for collected packages: pyaes
  Building wheel for pyaes (setup.py) ... done
  Created wheel for pyaes: filename=pyaes-1.6.1-py3-none-any.whl size=24548 sha256=29348592834504892837405982743058927049857209438570298475
  Stored in directory: /root/.cache/pip/wheels/ba/co/9c/029834750298347509283745098274506
Successfully built pyaes
Installing collected packages: pyasn1, rsa, pyaes, telethon
  WARNING: The scripts pyrsa-decrypt, pyrsa-encrypt, pyrsa-keygen, pyrsa-priv2pub, pyrsa-sign and pyrsa-verify are installed in '/var/packages/py3k/target/usr/local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /var/packages/py3k/target/usr/local/include/python3.8/UNKNOWN
sysconfig: /var/packages/py3k/target/usr/local/include/python3.8
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Successfully installed pyaes-1.6.1 pyasn1-0.4.8 rsa-4.7.2 telethon-1.21.1
WARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
  • 6: Instalar cryptg: (desde terminal o putty)
    (Es una pequeña extensión de C para Python 3 para ayudar a las bibliotecas que desean trabajar con la API de Telegram.)
    Con el comando:
    –> sudo python3 -m pip install cryptg
    *vemos el ejemplo de instalación:
TomoNota@Synology:~$ sudo python3 -m pip install cryptg
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /var/packages/py3k/target/usr/local/include/python3.8/UNKNOWN
sysconfig: /var/packages/py3k/target/usr/local/include/python3.8
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Collecting cryptg
  Downloading cryptg-0.2.post4-cp38-cp38-manylinux2010_x86_64.whl (41 kB)
     |████████████████████████████████| 41 kB 21 kB/s 
Collecting cffi>=1.0.0
  Downloading cffi-1.14.5-cp38-cp38-manylinux1_x86_64.whl (411 kB)
     |████████████████████████████████| 411 kB 4.9 MB/s 
Collecting pycparser
  Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
     |████████████████████████████████| 112 kB 12.0 MB/s 
Installing collected packages: pycparser, cffi, cryptg
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /var/packages/py3k/target/usr/local/include/python3.8/UNKNOWN
sysconfig: /var/packages/py3k/target/usr/local/include/python3.8
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Successfully installed cffi-1.14.5 cryptg-0.2.post4 pycparser-2.20
WARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
  • 7: Copiar BOT.torrent.py, en el NAS y editar las variables propias:
    Antes de copiarlo al NAS, yo lo editaría y luego ya lo copiaría, pero igualmente lo podéis copiar y luego desde allí editarlo tanto desde nuestro equipo como con el editor de texto de Synology.

    ¿Qué nos dice que debemos de cambiar? Buscamos en el archivo:
    # Variables de cada usuario ######################
    -Fijaros en lo que lleva comillas y respetarlo:

    session = ‘MiScriptDescargas’
    **Nombre script sin extensiones, no ponerle puntos, yo de normal no le pongo ni espacios, lo diferencio con mayúsculas.
    api_id = 6969696969 **Que hemos visto antes, sin comillas
    api_hash = ‘Vuestro api_hash de vuestra app que hemos visto antes’
    bot_token = ‘El TOKEN de vuestro BOT’
    download_path = ‘/volume1/vuestros directorios’
    download_path_torrent = ‘/volume1/vuestros directorios’
    **Nos recomienda un sitio para los torrent que lo lea DSDownload u otro programa que usemos para su descarga automática.
    download_path_mp3 = ‘/volume1/vuestros directorios’
    download_path_pdf = ‘/volume1/vuestros directorios’
    usuarios = {45643576758 : ‘Yo’, 98766754321 : ‘Papa”}
    **IDs de usuario autorizados, esto está genial, para autorizar las descargas y así que no todos lo puedan hacer.
    Para saber nuestra ID de usuario, desde Telegram tenemos que buscar al bot @get_id_bot, iniciar chat con él y darle a Start.
    Inmediatamente nos dirá nuestro ID.

    -Una vez editado lo copiamos en un sitio de nuestro NAS (si no lo tenéis ya allí).
  • 8: Ejecutar BOT de forma interactiva:
    Podemos hacerlo por terminal con el comando:
    –> python3 -u BOT.torrent.py
    *O -> python3 – u xxxx.py (el nombre con que has guardado el archivo)
    Yo por ejemplo lo renombre a BotDescargas.py

    Y también de forma automatizada:
    -Podemos crearlo con el “Programador de tareas” (click para link donde explico el programador de tareas).
    Alli creamos el sh con un script que contenga el comando:
    -> python3 -u /volume1/rutadecarpetas/nombre.py

¿Y si queremos pararlo?
Para detener el servicio tenemos varias maneras:
Por el comando:
-> pkill -f Nombre.py
Ver el listado con el comando:
-> ps -fA | grep python
*Nos saldrá el listado de scripts ejecutándose de python, veremos el nombre y podremos poner el comando anterior para detenerlo.
Consejo:
Puedes crearte otro script para detenerlo desde el “Programador de tareas”:
DetenerDescargasT.sh que contenga el comando de antes:
-> pkill -f nombre.py


Dar las gracias a nuestro compañero “Luis” por avisar de este genial bot y también a su creador DekkaR (que también tiene un grupo en telegram llamado DekNet).


¡Espero que os haya gustado!
Un saludo.

Deja una respuesta

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