QPKG TelegramTorrent para descargar archivos Torrent/PDF vía Telegram v1.03 - Versión para impresión +- Foro QNAP en español (https://www.qnapclub.es) +-- Foro: GENERAL (https://www.qnapclub.es/forumdisplay.php?fid=3) +--- Foro: Firmware, Aplicaciones y Tutoriales (https://www.qnapclub.es/forumdisplay.php?fid=39) +---- Foro: Tutoriales (https://www.qnapclub.es/forumdisplay.php?fid=40) +---- Tema: QPKG TelegramTorrent para descargar archivos Torrent/PDF vía Telegram v1.03 (/showthread.php?tid=3984) |
QPKG TelegramTorrent para descargar archivos Torrent/PDF vía Telegram v1.03 - Ganekogorta - 02-04-2021 Hola Este paquete se debe en gran parte al trabajo hecho previamente por Deckkar (https://t.me/DekNet/39) que inicialmente desarrolló para su nas de Synology un script en Python para hacer esas descargas. Me he animado a crear un instalador para evitar hacer toda la configuración a mano y poder automatizar el inicio y detención. 1- Objetivo Es poder poder servirnos de un Bot de Telegram para que cuando se le envíe un archivo .torrent o un PDF, éste sea descargado a una carpeta de nuestra NAS. El Bot ha de estar bajo nuestro control exclusivo ya que no queremos que otros nos envíen cosas para descargar sin nuestra aprobación. Luego, lo que podemos hacer es monitorizar la carpeta de esos archivos .torrent descargados. Esto lo haremos mediante un programa de terceros que detectará el archivo e iniciará la descarga del contenido del torrent. Programas de descargas que monitorizan el contenido de ese tipo de carpeta son Transmission, Rtorrent,… . 2 Requisitos previos Para que el paquete se instale hay que tener instalado Python, pero versión superior a la 3.8. Desgraciadamente Qnap en su repositorio oficial sólo tiene la 3.5 y no nos sirve. Así que podemos desinstalar o detenerla y bajarnos QPython3 en su versión 3.8.6.0. Se puede bajar de la página de QnapClub.eu usando el enlace QPython3 Como ubicación alternativa los también dejo disponibles en este enlace de Mega Recordad que recomiendo guardar en nuestro almacén personal todos los paquetes qpkg que nos instalemos. Y a futuro no dependemos de terceros para hacer de nuevo la instalación (esto es aplicable a cualquier tipo de software). Los contenidos en la nube no son eternos, pueden desaparecer sin previo aviso y de hecho desaparecen :O Tenemos que tener un Bot creado en Telegram. Algo ya he contado en otro hilo acerca de la creación para el envío de avisos desde la NAS solamente a nuestro móvil usando Telegram. En este caso es a la inversa, es para que el Bot envíe archivos a la nas. Si ya creasteis el Bot con el hilo anterior, trabajo que tenéis adelantado El paquete instalador está en este enlace de MEGA Lo he probado en equipos con Intel Celeron de la serie x53, Intel Atom x69, arm Annapurna x41. Hay generados mas formatos según arquitectura de la CPU, pero no he podido probar todos ya que no tengo de todos los modelos Pero lo único que podría limitarnos es la versión de Python. A nivel de instrucciones no se hace nada especial que sea excluyente según modelo. En un hilo posterior expondré el código y los archivos usados para entender el funcionamiento y que cada uno pueda hacer sus modificaciones. El funcionamiento es muy básico. Si abrimos la app desde QTS se nos abre una pantalla solicitando una clave. La clave inicial por defecto es "qnapclub.es". Después accedemos a la pantalla de configuración donde definimos 4 parámetros de configuración y la posibilidad de cambiar la clave. En esta pantalla tenemos 4 campos a rellenar:
Encima de cada cuadro de texto tenemos un ejemplo para saber el formato a utilizar. Mediante el botón de Guardar aplicamos los cambios en el archivo de configuración y tras un periodo máximo de un minuto, el servicio aplicará de forma efectiva los cambios. Esto es así ya que la aplicación no puede reiniciarse a si misma. También tenemos un cuadro para cambiar la clave de acceso Por seguridad la clave no se guarda en plano, se guarda su hash MD5. Si por lo que sea, la hemos olvidado o puesto mal y queremos dejar la de defecto. Desde consola o usando herramientas tipo WinSCP hemos de vaciar el contenido del archivo “clave.md5” y dejarlo a tamaño 0. Con ello la clave por defecto será de nuevo "qnapclub.eu" (o el md5 de la que queramos en la séptima línea del código de index.php) Este archivo estará un una ruta del tipo “/share/VOLUMEN_DATA/.qpkg/TelegramTorrent/” En la parte inferior tenemos un hiperenlace para "Desconectar" y cerrar la sesión. Una vez tengamos nuestra aplicación funcionando. podremos comprobarlo incluso desde nuestro cliente Telegram de ordenador. Si la aplicación o la nas estuviesen apagadas, los mensajes quedarían en cola. Una vez arranquemos la aplicación, en la pantalla de Telegram lo veremos así Y los archivo .torrent estarán descargados a la carpeta definida Las mejoras que pueden hacerse son muchas pero creo las siguientes le vendrían bien al paquete:
QPKG TelegramTorrent para descargar archivos Torrent/PDF vía Telegram v1.02 - Ganekogorta - 03-04-2021 Hola Voy a describir como funciona internamente la aplicación con la idea de que sirva a otros para hacer las suyas o mejoras El archivo TelegramTorrent.sh se basa en un archivo plantilla ya creado por defecto cuando creas un paquete desde la aplicación QDK. Básicamente lo que hace es ejecutar unos comandos al activar la aplicación desde el app center y otros comandos cuando lo detenemos. El código completo de TelegramTorrent.sh es: Código: #!/bin/sh En nuestro caso además tenemos una dificultad añadida de que al efectuar la primera ejecución hay que hacer una primera ejecución de unos comandos para preparar python. Y ademas, no lanzaremos la escucha del bot ya que todavía no está configurado. Para saber si es la primera ejecución compruebo la no existencia de un archivo "flag.txt". Si existe, es que ya hemos hecho la configuración de python. En el primer arranque se hace las siguientes operaciones:
Código: touch $QPKG_ROOT/flag.txt
Código: sudo $dirQPython/bin/python3 $QPKG_ROOT/get-pip.py
Código: sudo $dirQPython/bin/python3 -m pip install pyTelegramBotAPI
Código: touch $QPKG_ROOT/flag2.txt
Código: chmod 666 $QPKG_ROOT/botcfg.txt
Código: ln -s $QPKG_ROOT/web /home/Qhttpd/Web/TelegramTorrent
Código: echo -e "*/1 * * * * $QPKG_ROOT/comprobador.sh">> /mnt/HDA_ROOT/.config/crontab En el segundo arranque y posteriores se ejecutan estas operaciones:
Código: $dirQPython/bin/python3 $QPKG_ROOT/BotTorrent.py &
Código: ln -s $QPKG_ROOT/web /home/Qhttpd/Web/TelegramTorrent
Código: echo -e "*/1 * * * * $QPKG_ROOT/comprobador.sh">> /mnt/HDA_ROOT/.config/crontab En el caso de desactivación de la aplicación, las acciones que ejecutamos son:
Código: sed -i '/comprobador.sh/d' /etc/config/crontab
Código: ps | grep BotTorrent | grep -v grep | awk '{ print $1} ' | xargs kill
Código: rm /home/Qhttpd/Web/TelegramTorrent Bueno, ahora vamos con el mini script auxiliar "comprobador.sh". Como desconozco como hacer que desde la web se pueda reiniciar la aplicación para aplicar la configuración, se me ocurrió el hacer una tarea programada que ejecuta ese "comprobador". Lo que hace es comprobar el tamaño del archivo "flag2.txt", y si es distinto de cero ejecuta el reinicio (parada, vaciado de contenido de flag2.txt y arranque) El código de este script es el siguiente: Código: #!/bin/sh Con esto soluciono el tema de aplicación de cambios de configuración. No se aplican instantáneamente y se hacen a intervalos de un minuto. Podemos aumentar el tiempo modificando la línea de crontab en el archivo "TorrentTelegram.sh", 5 o 10 minutos también serían correctos. Todo lo anterior es referente a la aplicación archivos bash en la nas. Ahora describo como es el funcionamiento de los archivos php de la web. Como mis conocimiento son muy básicos la web tiene esa apariencia tan pobre, pero nos sirve. Como función primordial lo que hace es recomponer el archivo "BotTorrent.py". Y digo recomponer porque mas o menos a mitad de su contenido es donde están los 4 parámetros que queremos modificar. Así que lo que hago es regenerar por concatenación el archivo "BotTorrent.py" partiendo de:
Si tenéis conocimientos de python, podemos modificarlos para bajar mas tipos de archivos, y seguramente podemos jugar con el máximo tamaño del archivo a descargar. La función secundaria es el permitir cambiar la clave de acceso. Esto se ha hecho para aumentar la seguridad de acceso. Y es que al tener activada la aplicación web, ésta también está disponible si escribimos http://ip_nas/TelegramTorrent. Es decir estaría accesible desde el exterior y si la tenemos accesible desde el exterior no queremos que nadie nos manipule el la aplicación En versiones anteriores tenias varios archivos ditintos en la web, pero he modificado el codigo php fusionando varios archivo y moviendo otros para evitar que sean accesibles. El código del index.php es el siguiente: Código PHP: <?php Se agradecerían mejoras en él para optimizarlo. Por ejemplo para los que sepan, se puede ver que leo las líneas del archivo botcfg.txt de forma secuencial (y als voy contando) y no creo un array de 4 elementos. Hay muchas cosas que se podrían mejorar, incluso la estética Y creo que eso es todo lo que puedo contar acerca del código. Si hago (o hacemos) alguna mejora, la pondré por aquí a disposición de todos. He actualizado este mensaje un par de veces, según he ido añadiendo mejoras de seguridad y de estructura. |