Convierta su antiguo teléfono Android en un servidor local de tareas especiales con Termux y Sinatra | de Adarsh ​​Pal Singh | Octubre de 2020

Moto G opera un servidor web basado en Sinatra en Termux.

Como el único ingeniero de software de mi familia, soy un tipo al que recurrir para cualquier cosa que se relacione remotamente con las computadoras. Por supuesto, siempre me ha gustado resolver problemas … al menos por primera vez. La repetición es algo que no gusta a todos los técnicos de software. Cuando vemos que un fragmento de código se repite, tendemos a colocarlo en una función separada. Asimismo, cuando nos decimos que hagamos una tarea una y otra vez, intentamos automatizarla. Y eso es exactamente lo que hice en casa para hacer la vida un poco más fácil y para quienes dependen de mí.

DEhes Cuando se trata de crear un servidor local de bajo costo que pueda funcionar las 24 horas del día, los 7 días de la semana sin cobrar una factura de electricidad, la Raspberry Pi es lo primero que me viene a la mente. ¡Los RasPis son geniales! Ejecutan Linux, consumen muy poca energía y son lo suficientemente potentes y flexibles para manejar la mayoría de las tareas de automatización que no requieren modelos complejos de aprendizaje profundo para ejecutarse. De hecho, la Raspberry Pi sería ideal para la automatización que quería hacer. Solo había un problema: no tenía uno en casa. Me dirigía a Amazon para comprar uno cuando noté mi primer teléfono Android que compré en 2014 y me miré. Había otro dispositivo Linux de bajo consumo que acumulaba polvo, lo que no costaría ni un centavo.

Configurar un entorno de desarrollo ideal para Android

Android se está ejecutando técnicamente en el kernel de Linux, pero ningún entorno o administrador de paquetes está realmente expuesto al usuario. Lo primero que tenemos que hacer es poner en funcionamiento el entorno Linux para poder instalar algunas aplicaciones cli de Linux que nos acerquen a lo que es la Raspberry Pi.

  1. Instalar en pc Termux desde Github o PlayStore. Termux es una aplicación de terminal de código abierto que proporciona un entorno Linux y un administrador de paquetes nativo bal para Android. Si ha utilizado Ubuntu u OSX antes, bal es un administrador de paquetes similar apto y cocinar.
  2. Ahora que tenemos el entorno Linux ejecutándose en Android, debemos decidir qué marco e idioma usar para desarrollar nuestro servidor web. Termux admite casi todo, desde Python hasta Ruby y Node.js. Yo fui con Sinatra, una biblioteca de aplicaciones web de código abierto escrita en Ruby porque es fácil de usar y lo suficientemente ligera como para no cargar mi teléfono de seis años con 1 GB de RAM. Para ejecutar Sinatra en Termux, ejecute los siguientes dos comandos:

No olvide instalar también Ruby y Sinatra en su computadora para facilitar la programación. No te detendré si quieres codificar en tu teléfono con vim. ¡Buena suerte!

Puede hacer muchas cosas con un servidor web local; todo depende del caso de uso específico y de las tareas que desee automatizar para simplificar su vida. Para mí, estas son tareas que los familiares a menudo me piden que haga:

Algunas de estas tareas pueden parecer triviales ahora, pero absténgase de juzgar hasta descifrar exactamente lo que se está haciendo aquí. Antes de pasar a la implementación, cree un nuevo directorio para este proyecto dentro de Termux. Por el bien de este tutorial, me referiré a este directorio como old_phone_server. Déjalo vacío por ahora, lo llenaremos según sea necesario.

Tarea 1: Descargador de medios de YouTube

Este es el contexto: mi padre tiene una computadora portátil con Windows, un teléfono Android y un iPad. Puedo solicitar la descarga de un video de YouTube desde cualquiera de estos tres dispositivos. No solo eso, la calidad del contenido a descargar puede variar desde Full HD (para almacenar video en la galería) hasta tamaño de video <16 MB (para que se pueda transmitir a través de WhatsApp) hasta audio (para agregar a su colección de música ). Hay muchas aplicaciones en Windows y Android que "afirman" hacer este trabajo, pero a menudo contienen mucho bloatware y fallan con más frecuencia de lo que tienen éxito (olvídese de iOS). ¿Cómo puedo hacer eso? Si está utilizando un sistema basado en Linux / Unix, es posible que ya conozca esta aplicación cli mágica de código abierto llamada youtube-dl. Con más de 70.000 estrellas en Github, este hermoso software puede hacer maravillas cuando se trata de descargar contenido de YouTube e incluso de otros sitios como Facebook y Reddit. Así que aquí está la parte frontal que creé para mi aplicación local:

Bien, ¿eh? Abra la página local desde cualquier navegador que se ejecute en cualquier dispositivo, seleccione la calidad, inserte el enlace y bam, el contenido se descargará directamente a su dispositivo. Antes de saltar al código de Sinatra, primero instale las siguientes dependencias en Termux:

Dentro old_phone_server crear dos nuevos directorios puntos de vista y descargar. Dos .escudo de armas Los archivos que se muestran a continuación se encuentran en este puntos de vista directorio. los descargar es donde se almacenarán temporalmente nuestros medios descargados de YouTube. El código Ruby se encuentra en el directorio raíz old_phone_server directorio.

Ambos .escudo de armas los archivos tienen un código HTML sencillo y super sencillo. los simple_webserver.rb es el código Ruby-Sinatra que se encarga del backend. Intenta leerlo y todo tendrá sentido, ¡lo prometo! Después de guardar estos archivos, vaya a la carpeta old_phone_server directorio y ejecute este comando para iniciar el servidor:

No abandone Termux después de ejecutar este comando. Seleccione «Obtener wakelock» en el mosaico de notificaciones de Termux para asegurarse de que Android no mata a Termux cuando la pantalla se queda en blanco.

Abierto para acceder a este servicio : 4567 / youtube desde cualquier dispositivo conectado al enrutador y utilice los servicios proporcionados por esta aplicación.

Tarea 2: Compresor de PDF

Una búsqueda en Google le dirá que Internet está lleno de compresores PDF en línea: simplemente cargue el archivo PDF en su portal web y obtenga una versión comprimida. Algunos de ellos son bastante buenos. El único gran problema es la privacidad. Los archivos PDF pueden contener una variedad de datos privados y clasificados a los que no desea que nadie acceda. No hay garantía de que lo que acaba de cargar en este sitio web sea «eliminado» como se prometió. Afortunadamente, hay otro proyecto famoso de código abierto que puede ejecutar en su terminal y obtener el mismo resultado que este sitio web (estoy bastante seguro de que la mayoría lo usa de todos modos): ghostscript. De hecho, puede haber un fantasma, ya que esta aplicación de clip puede reducir el tamaño de los archivos PDF al 15% de su tamaño original sin una pérdida visible de calidad. Por supuesto, la contracción depende de un conjunto a otro. Si crea archivos PDF a partir de fotos utilizando aplicaciones como CamScanner y Adobe Scan, esta aplicación puede hacer maravillas cuando se trata de reducir su tamaño.

La interfaz de mi aplicación web para la compresión de PDF es bastante simple: seleccione el archivo, presione «Subir PDF» y bam, se descargará el PDF comprimido. Antes de ir al código, primero instale ghostscript en Termux:

Pega lo siguiente de nuevo .escudo de armas archivos en puntos de vista directorio y almacenar el código Ruby en el directorio raíz old_phone_server directorio (o montarlo en el anterior) simple_webserver.rb archivo si desea ambas funciones). También crea un directorio vacío por nombre Guarniciones. Aquí, Sinatra almacenaría temporalmente archivos PDF cargados y archivos comprimidos. Note que agregué «Obtener ‘/ Descargar'» bloque de código aquí nuevamente solo para hacer de esta esencia una pieza separada de código completamente funcional.

Esto se puede iniciar usando el mismo comando que antes. La interfaz de esta aplicación se puede abrir abriéndola : 4567 / pdf en cualquier dispositivo.

Tarea 3: Nube local para transferencia de archivos local

Una vez vi a mi hermana subir un archivo de 2 GB a GDrive desde mi computadora y luego descargar el mismo archivo a mi teléfono 5 minutos después. Se desperdician 4 GB de ancho de banda en solo minutos y ¿para qué, transfiriendo archivos de una computadora a otra? Además, obviamente, enviarse archivos por correo electrónico a sí mismo sigue siendo una cosa. Francamente, estar tan acostumbrado Conexión de KDE ecosistema en Linux, no he notado que la transferencia de archivos locales entre diferentes dispositivos con otros sistemas operativos sigue siendo un problema en el mundo real. Aquí está mi solución simple:

Seleccione un usuario, cargue un archivo y bam, cargue a un servidor local (el viejo Moto G). La interfaz del servicio de descarga es casi idéntica a la de este servicio cargado, carece del botón «Seleccionar archivo». A diferencia de los tutoriales anteriores, no se necesitan bibliotecas mágicas para realizar esta tarea, solo la bondad de Sinatra.

De nuevo, códigos frontend y backend súper simples. La forma en que implemento guardar y cargar los últimos archivos cargados por un usuario en particular es un poco complicado por ahora, pero bueno, funciona (¡solo 4 personas lo usarán para su defensa y es demasiado suave)! En cuanto a cómo hacerlo, pega .escudo de armas archivos en puntos de vista directorio como antes, crea un directorio vacío llamado grabación en el directorio raíz del proyecto (aquí Sinatra guarda los archivos cargados) y ejecuta el código Ruby. Para cargar algo en su nube local, visite : 4567 / fileup seleccione usuarios desde cualquier dispositivo y cargue lo que crea conveniente. Para descargar un archivo subido recientemente, visite : 4567 / filedown desde cualquier dispositivo, seleccione un usuario y descárguelo! No más desorden con la compatibilidad Bluetooth entre diferentes dispositivos o desperdicio de ancho de banda de Internet costoso para transferencias de archivos.

Tarea 4: Buzón de correo compartido

¿Cuántas veces navegó por la web en su tableta o computadora portátil y de repente encontró algún texto o enlace interesante que desea insertar en su teléfono o viceversa? Esto es algo a lo que estoy acostumbrado gracias a KDE Connect, pero no existe una solución de oro para dispositivos que no sean Linux. He visto a personas enviar mensajes o incluso utilizar servicios como pastebin. Esta característica es probablemente la más fácil de implementar entre todas las tareas que he establecido en este artículo hasta ahora, ¡y también quizás la más útil de todas!

La interfaz para pegar la página de inicio es similar a la anterior copia uno menos el cuadro de texto. Simplemente seleccione el usuario y se renderizará el último texto copiado. Aquí está el resultado de lo que acabo de copiar se representa en un cuadro de texto:

Interfaz súper simple, ¿eh? El cuadro de texto admite algunas funciones de texto enriquecido, como la representación de nueva línea, que es muy importante al copiar muchos párrafos de Internet. Aquí hay un código muy simple:

Los desarrolladores con ojos de águila pueden haber notado que utilizo archivos de texto simples para almacenar y cargar texto, pero también pueden usar una base de datos. Por cierto, PostgreSQL y SQLite funcionan de una manera encantadora en Termux. Con el tiempo, probablemente pasaré al acceso a la base de datos a operaciones más complejas de almacenamiento y recuperación de texto, pero ahora mis clientes parecen bastante felices con lo que ha sucedido. ¡Descubre también cómo ejecutarlo! No repetiré las instrucciones para la cuarta ejecución (SECO). Está bien, solo una cosa, déjala vacía Caja directorio de Sinatra para almacenar archivos de texto. Bueno, una cosa más, visita para acceder al servicio de copia : 4567 / copia y visita para acceder al servicio de incrustación : 4567 / pasta desde cualquier dispositivo con cualquier sistema operativo.

¡Chicos, aquí tienen! ¡Una manera súper fácil de no gastar $ 35 en una Raspberry Pi y poner su viejo teléfono Android, que Amazon no usará para intercambiar, para hacer un buen uso! Ahora que lo pienso, tengo un teléfono inteligente más nuevo con un sistema Android con una pantalla AMOLED completamente no funcional, ¡que crearía el dispositivo perfecto para este trabajo! ¿Esperar hasta que instale Termux y ejecute el código sin que la pantalla me dé ninguna pista visual? ¡Creo que lo averiguaré y te lo haré saber en otra publicación en los medios! Por cierto, el propósito de este artículo fue proporcionarle un punto de partida y una dirección. ¡Personaliza este sistema para tu uso y compártelo! Feliz piratería 🙂

Ps En caso de que esté interesado en cómo administro el espacio de almacenamiento en mi Moto G, creé una tarea cron que borra todos los directorios todos los días a las 3 de la mañana.

Deja una respuesta

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