Hoy en día es extraño aquél que no dispone de una cuenta de Twitter. Esta red social se ha convertido en el máximo exponente de las comunicaciones. Se emiten millones de mensajes cada segundo, se habla de millones de temas al mismo tiempo, se genera spam, publicidad, cualquier cosa que sea publicable es digna de ser escrita a través de Twitter. Y no en vano se ha convertido en el mejor sistema de mensajería corta en la actualidad.
Muchos diréis “para qué quieres conectar la Pi a Twitter”… Bien, es difícil de explicar, simplemente lo voy a hacer, porque me ha parecido interesante ver como hay cientos de Pi’s en todo el mundo transmitiendo el mismo mensaje:
Si hacéis un par de búsquedas en Twitter por #RaspberryPi o #temperature, no es raro encontrarte con cosas de estas… Bien, si miramos un poco más allá, es solo el principio de un sistema autónomo de información o publicación de datos de manera automática. Imaginad, poder consultar el estado de un depósito, información del espacio libre de un párking público o, símplemente, una nueva vñia de publicación de noticias… Cualquier cosa que te puedas imaginar, y gestionada por un sistema de bajo coste y buen rendimiento.
El procedimiento es sencillo, instalaremos Python en nuestro sistema y un cliente o gestor de publicaciones en Twitter a través de esta tecnología. ¿Por qué? Porque Python es sencillo de usar, liviano y extremadamente extendido en el mundo Linux y Pi.
Partiremos de la premisa de que disponéis de Python en vuestra Pi (sino, podéis consultar mi anterior post: RasPi: Instalación de Python
Comencemos.
Actualizar el sistema
Como siempre, antes de seguir, debemos actualizar nuestro sistema:
pi@raspberrypi ~ $ sudo apt-get update pi@raspberrypi ~ $ sudo apt-get upgrade
Así nos aseguramos de que nuestro sistema está al día.
Instalación de Twython
A continuación instalamos Twython (http://twython.readthedocs.org/en/latest/), un cliente de Twitter en modo consola y escrito en Python:
pi@raspberry ~ $ sudo pip install twython
tras esto, ya tenemos disponible nuestro cliente de Twitter mediante Python.
Configuración de Twython
Para poder utlizar Twython es necesario asociar nuestra cuenta de Twitter con una aplicación externa. Esta aplicación es la encargada de redirigir el flujo de twits hacia Twitter. Accede a esta url: https://dev.twitter.com/apps y accede mediante la cuenta que usarás con Twython.
Accedemos y clicamos en el botón “Create a new application”, tras lo cuál obtendremos la siguiente pantalla:
Informad los siguientes datos con algo parecido:
- Name: RasPi Bot
- Description: Cliente Twitter autónomo para raspberry Pi vía Twython
- Website: www.TUWEB.com (aquí debes indicar una url en la que debe estar publicada la política de uso de tu aplicación, es obligatorio…)
- Callback URL: no es necesario, es la url dónde se nos redirigirá una vez iniciada sesión… no es muy útil en nuestro caso…
Bien, una vez rellenados, aceptad las políticas de uso y rellenad el captcha…
Y tras la creación, obtenemos los resultados que a continuación os muestro:
Tomad buena nota de los resultados, ya que los necesitaremos para configurar nuestro cliente posteriormente…
Sólo nos queda una cosa que cambiar, y es el modo de acceso que tendremos a la aplicación. Dado que lo que deseamos es que nuestra Pi pueda escribir twits, hemos de cambiar los permisos, indicando lectura / escritura. Para ello, id a la parte superior de esa pantalla, clickad en Settings y, en el apartado de Application Type, marcad Read and Write:
Ahora ya está todo configurado. Bajad hasta abajo de la pantalla y clickad sobre Update this Twitter application’s settings.
Bien, y de nuevo en la pestaña Details, bajamos a bajo del todo y clickamos sobre Create my access token, que lo que hará será activar finalmente nuestra aplicación:
El resultado lo necesitamos en el siguiente punto. Veréis que indica que hay que esperar unos minutos antes de que se publique el token. Bien, recordad pasar de nuevo por esta página mas tarde, ya que necesitaremos esta información en breve…
Creación del script Python
Una vez que tenemos dada de alta nuestra aplicación y asociada a nuestra cuenta de Twitter, es el momento de hacer uso de la misma. Para ello, generaremos un script muy sencillo en Python que hará uso de la librería de Twython. De este modo, lo que haremos será loguearnos en el sistema de Twitter, mediante los datos que hemos generado anteriormente, y enviaremos un mensaje de prueba desde consola.
Empecemos por crear el script:
pi@raspberrypi ~ $ mkdir TwitterBot pi@raspberrypi ~ $ cd TwitterBot pi@raspberrypi ~/TwitterBot $ nano TwitterBot.py
Y añadimos el siguiente contenido:
#!/usr/bin/env python import sys from twython import Twython CONSUMER_KEY = 'XXXX' CONSUMER_SECRET = 'XXXX' ACCESS_KEY = 'XXXX' ACCESS_SECRET = 'XXXX' api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET) api.update_status(status=sys.argv[1])
Ahora es el momento de utilizar cada uno de los datos generados en la primera parte de este mini tutorial:
- CONSUMER_KEY: Consumer key generada en la aplicación Twitter
- CONSUMER_SECRET: Consumer secret generada en la aplicación Twitter
- ACCESS_KEY: Access token generado en el último paso
- ACCESS_SECRET: Access token secret generado en el último paso
Test de funcionamiento
Tras esto, ya podemos realizar la primera prueba.
pi@raspberrypi ~ $ python TwitterBot.py 'Hello World from #RaspberryPi via @jormcpi'
Y vemos que… 🙂
Como podemos ver, el tuit ha sido publicado correctamente. Cabe destacar que es muy recomendable no abusar del uso de la cuenta desde la aplicación, ya que Twitter puede decidir que se está usando un Bot real (que es cierto) y cancelarla, por no cumplir con los requisitos necesarios para poder hacer uso de la misma (ser una persona física).
A partir de aquí dejo a la elección e imaginación de cada uno el hacer uso de este recurso de la mejor manera que crea conveniente. En futuras entradas os explicaré cómo publicar el estado de nuestra Pi de manera autónoma y con una cadencia temporal definida. Para ir abriendo boca, os dejo como ejercicio pensar en la relación que se puede hacer entre la llamada a este sencillo script compaginado con el uso de Cron, llamadas a sistema, etc…
Espero que os haya servido de ayuda y entretenimiento. Cualquier duda, ya sabéis.
Suerte!
Jordi
Pingback: RasPi: automatización con Cron & CronTab | jormc.es