634 - Retwittear con Python y Docker

634 - Retwittear con Python y Docker

Un servicio implementado en #python y #docker para retwittear todo lo que publique una cuenta utilizando #github actions y #openobserve

1:25
-3:15

En distintas ocasiones te he hablado del poco tiempo que dedico a las redes sociales. En particular, me refiero a publicar el contenido que realizo en cada una de las redes sociales. Esto particularmente me parece algo muy tedioso, y por esta razón le dedico tan poco tiempo. Por esta razón, he creado diferentes automatismos que me permiten publicar en las distintas redes que manejo sin intervención humana. Aunque soy plenamente consciente de que esta forma de publicar no es del gusto de los propietarios, y por tanto lo pago con la visibilidad. Como de costumbre, no me importa, y prefiero perder visibilidad a perder tiempo. Sin embargo, en este caso, te voy a hablar de un sencillo servicio que he implementado para retwittear de forma automática una cuenta, aunque se podría modificar para hacerlo a varias cuentas. Así, en este episodio te voy a hablar de retwittear con Python y Docker.

Retwittear con Python y Docker

Un poquito de trasfondo

Hace algún tiempo me encomendaron una misión. Se trataba de crear un mecanismo que permitiera retwittear todo lo que twiteara una de terminada cuenta. No pienses en ningún momento que sea trataba de ninguna maldad, ni nada por el estilo. Nada mas lejos de la realidad. Simplemente, se trataba de que una cuenta de una organización autonómica retwitteara lo que publicara la organización nacional. A mi en particular, me parecía algo innecesario, pero, evidentemente esto es una opinión totalmente personal y probablemente fuera de lugar.
La cuestión, es que estuve barajando diferentes opciones para realizarlo. Inicialmente estuve utilizando la API de Twitter hasta que dejó de funcionar, por restricciones en los endpoint que estaba utilizando. En este primer caso, hice un script que puse en marcha como servicio. Sin embargo, tras los problemas con la API, decidí cambiar de estrategia y ponerlo en un contenedor Docker para desplegarlo con mas facilidad.
Esto de ponerlo en un contenedor Docker, es una solución por la que me decanto en la mayoría de los casos. La razón es muy sencilla. Me permite tener todo lo necesario para que funcione en un único paquete, y además, me permite desplegarlo en cualquier lugar donde tenga Docker. Además, en este caso, me permite tener un entorno de ejecución muy controlado, y que no afecte a mi sistema principal.
El problema real se trataba de la solución a adoptar para resolver el problema con la API de Twitter.

Twikit

Para resolver el problema de la API de Twitter estuve buscando y probando diferentes soluciones hasta que me encontré con Twikit. Twikites un scraper, básicamente una herramienta que extrae información de una página web, en este caso de Twitter. La cuestión es que, a pesar de que no es la solución mas elegante, es la que mejor se adaptaba a mis necesidades. En particular, porque no necesitaba autenticarme en la API de Twitter, y porque no necesitaba tokens ni nada por el estilo. Simplemente, necesitaba la URL de la cuenta a la que quería retwittear y el tiempo que quería que pasara entre cada retweet.
La cuestión es que se trata de una librería de Python que te permite interaccionar con Twitter de forma sencilla, y para lo que andaba buscando funciona espectacular.
Tengo que decirte que si las llamadas a la API son muy frecuentes Twitter te puede bloquear, por lo que es recomendable que no abuses de esta herramienta. En mi caso, el tiempo entre retweets es de 10 minutos. Cierto es que en un momento concreto mientras hacía algunos cambios se me fue de la mano, y en unos pocos segundos hizo 50 llamadas y en seguida me dió error por excesivas llamadas. Dejé transcurrir los 10 minutos de rigor y a funcionar.
Esta librería de Python te permite realizar las operaciones básicas que harías tu mismo, por ejemplo,

  • crear tweets
  • buscar tweets
  • obtener las tendencias
  • subir multimedia
  • buscar tweets basados en una palabra clave

El contenedor Docker

El contenedor Docker es realmente sencillo, y solo tienes que indicar unos pocos parámetros, como son, tus credeciales, el id de la cuenta que quieres retwittear y el tiempo entre observaciones. Me refiero al tiempo entre mirada y mirada para ver si hay un nuevo tweet en la cuenta que sigues. Puedes ver como realizar la configuración y el docker-compose.yml en el repositorio de retwitter

OpenObserve

Además de esto, y como viene siendo habitual los resultados los envío a OpenObserve, que es una alternativa a ElasticSearch y Kibana, mucho mas ligera y sencilla, pero que se adapta perfectamente a mis necesidades.
Además tiene una característica que me resulta muy util. Me permite realizar búsquedas en los resultados utilizando SQL. Esto me permite realizar búsquedas mucho mas complejas y con mucha mas flexibilidad.
Pero sobre todo me permite ver el funcionamiento de retwitter de una forma mucho mas gráfica y visual, y si se produce cualquier problema tenerlo identificado rápidamente.

GitHub Actions

Y para completar el círculo me remito al episodio 625 en el que te hablé de GitHub Actions. En este caso he añadido un workflow que se encarga de crear la imagen Docker y subirla a DockerHub para que esté disponible para quien quiera utilizarla.
Y es que la ventaja de GitHub Actions es que te permite automatizar tareas de forma sencilla. Sobre todo por la gran cantidad de workflows que hay disponibles, con lo que simplemente tienes que buscar alguno que se adapte a tus necesidades, modificarlo a tu gusto y ponerlo a funcionar.

Deja una respuesta

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