Crea tu propio bot de Twitter con Python and Frpberry Pi

| |

COMPARTE EL ARTÍCULO!!!

Twitter es una maravillosa plataforma de comunicación y redes sociales. Tiene de todo: noticias de última hora, opinión política, humor, celebridades, entretenimiento, charlas de interés especial y, bueno, cualquier cosa. Individuos, compañías, departamentos, proyectos y mucho más -en realidad, cualquier persona o cosa- pueden tener una cuenta de Twitter Algunas cuentas de Twitter ni siquiera son administradas manualmente por una persona o un grupo de personas, son robots automatizados.

Es muy sencillo escribir un bot de Twitter usando Python-y un raspberry Pi es la herramienta perfecta para ejecutar el código; en lugar de dejar un PC o portátil encendido permanentemente, puedes dejar tu raspberry Pirunning 24 horas al día, 7 días a la semana y casi no se usará energía. Dicho esto, si no tienes un Pi de raspberry, la mayor parte de este tutorial seguirá funcionando para ti en un PC.

Más sobre el Pi de raspberry

  • ¿Qué es Frambuesa Pi?
  • Introducción a Frambuesa Pi
  • Introducción a la hoja de trucos de Frambuesa Pi
  • Lo último en raspberrys Pi
  • Envíenos sus proyectos y tutoriales de Frambuesa Pi

Introducción a la API de Twitter

Twitter es un servicio web que proporciona una interfaz de programación de aplicaciones (API), lo que significa que puede escribir software que se comunica con el servicio de Twitter en vivo, tal vez para leer tweets en tiempo real o para publicar tweets automáticamente.

El uso de la API es gratuito, pero es necesario tener una cuenta de Twitter y registrar la aplicación para poder acceder a la API, pero eso es bastante fácil.

Empieza por ir a apps.twitter.com. Cree una nueva aplicación completando los campos obligatorios; asegúrate de seleccionar Leer y escribir con los permisos de su aplicación. Esto generará una clave de consumidor, un secreto de consumidor, un token de acceso y un token de acceso secreto. Necesitarás estas cuatro claves para conectarte a tu cuenta de Twitter desde tu código Python. No comparta estas claves con nadie, ya que pueden utilizarse sin la contraseña de la cuenta. Si comparte su código en línea, asegúrate de no incluir estas claves.

twitter-apps.png

Para acceder a la API de Twitter desde Python, necesitarás instalar la biblioteca Twython. Instale esto usando pip en una ventana de terminal:

sudo pip3 install twython

Abra su editor Python y cree un nuevo archivo. Guárdelo como auth.py e inserte sus propias claves de API en este código de ejemplo:

consumer_key = $0027ABCDEFGHIJKLKLKMNOPQRSTUVWWXYZ$0027″.
consumer_secret = $00271234567890ABCDEFGHIJKLMNOPQRSTUVXYZ$0027″.
access_token = $0027ZYXWVVUTSRQPONMLKJIHFEDCBA$0027.
access_token_secret = $00270987654321ZYXWVVUTSRQPONMLKJIHFEDCBA$0027.

En otro archivo, escribe este sencillo programa para comprobar si puedes enviar un tweet:

de la importación twython Twython
de la importación autorizada (
llave_consumidor,
consumer_secret,
access_token,
secreto_de_acceso
)
twitter = Twython(
llave_consumidor,
consumer_secret,
access_token,
secreto_de_acceso
)
message = «¡Hola mundo!»
twitter.update_status(status=mensaje)
print(«Tweeted: {}».format(message))

Guarde y ejecute este archivo. Debería enviar un tweet diciendo «¡Hola mundo!

twitter-hello-world.png

Si obtiene un error, compruebe que las claves de la API se han copiado correctamente.

Ahora intente añadir algo de aleatoriedad a su programa. Añade el módulo aleatorio en la parte superior:

importar al azar

Añada una lista de mensajes y seleccione uno al azar:

mensajes = [ []
«Hola Twitter»,
«Hola de Python»,
«Hola de mi Pi Frambuesa»,
«Soy un robot»,
]

Luego cambia tu código para elegir un mensaje al azar de la lista antes de twittearlo:

message = random.choice(mensajes)

También puedes intentar twittear imágenes:

message = «Hola mundo – aquí hay una foto!»
con open($0027/home/pi/Downloads/image.jpg$0027, $0027rb$0027) como foto:
twitter.update_status_with_media(status=mensaje, media=foto)

Lectura de Twitter

Además de usar Python para enviar tweets, también puedes leer tweets usando la clase TwythonStreamer:

de la importación de twython TwythonStreamer
de la importación autorizada (
llave_consumidor,
consumer_secret,
access_token,
secreto_de_acceso
)
clase MyStreamer(TwythonStreamer):
def on_success(self, datos):
si `texto$0027 en los datos:
print(data[$0027text$0027])
stream = MyStreamer(
llave_consumidor,
consumer_secret,
access_token,
secreto_de_acceso
)
stream.statuses.filter(track=$0027raspberry pi$0027)

Este código rastrea todos los tweets que contienen la frase «raspberry pi.» Cuando encuentra un tweet, envía una colección de datos sobre el tweet al método on_success. Data es un diccionario que contiene el texto del tweet, junto con muchos metadatos. Aquí, acabamos de imprimir el contenido del tweet. Puedes dejarlo funcionando, y ejecutará el método on_success cada vez que un nuevo tweet coincida con la búsqueda. Esto podría ser una palabra, una frase o un hashtag.

Este ejemplo imprime el nombre de usuario de la cuenta que tuiteó, así como el contenido del tweet:

clase MyStreamer(TwythonStreamer):
def on_success(self, datos):
si `texto$0027 en los datos:
nombre de usuario = datos[$0027usuario$0027][$0027nombre_de_pantalla$0027]
tweet = datos[$0027texto$0027]
print(«@{}: formato(nombre de usuario, tweet))

Para obtener más información, consulte la guía de aprendizaje de Raspberry Pi sobre el uso de la API de Twitter con Python.

Si quieres que tu código de bot de Twitter se ejecute las 24 horas del día, los 7 días de la semana, puedes instalarlo en un servidor web, ejecutarlo en un raspberry Pi en casa, o incluso usar un raspberry Pi alojado.

Componentes físicos

rpi-physical.jpg

Con un Pi de raspberry, puedes añadir fácilmente componentes físicos, como botones y LEDs, a tu programa de Twitter. Por ejemplo, puede configurarlo para que envíe un tweet aleatorio cuando se pulsa un botón físico:

desde gpiozero import Botón
Botón = Botón(2)
botón.wait_for_press()
message = «¡Hola mundo!»
twitter.update_status(status=mensaje)
print(«Tweeted: {}».format(message))

O twittear la lectura de la temperatura de Sense HAT:

de sense_hat importar SenseHat
sense = SenseHat()
mensaje = «La temperatura actual es {:2.2f}
grados».formato(temperatura.sensata)
twitter.update_status(status=mensaje)

O enciende un LED cuando un tweet coincide con una búsqueda:

de gpiozero import LED
led = LED(3)
clase MyStreamer(TwythonStreamer):
def on_success(self, datos):
si `texto$0027 en los datos:
led.on()
nombre de usuario = datos[$0027usuario$0027][$0027nombre_de_pantalla$0027]
tweet = datos[$0027texto$0027]
print(«@{}: formato(nombre de usuario, tweet))
dormir(10)
led.off()

sense-hat.jpg

O desplácese por el tweet en una pantalla de Sense HAT:

de sense_hat importar SenseHat
sense = SenseHat()
clase MyStreamer(TwythonStreamer):
def on_success(self, datos):
si `texto$0027 en los datos:
nombre de usuario = datos[$0027usuario$0027][$0027nombre_de_pantalla$0027]
tweet = datos[$0027texto$0027]
sense.show_message(«@{}: formato(nombre de usuario, tweet))

Para más información sobre la computación física con Raspberry Pi, vea mis artículos sobre los proyectos de inicio de GPIO Zero y cómo empezar con el Sense HAT. También puedes hacer un proyecto de tweeting de la cámara Raspberry Pi siguiendo el tutorial de Tweeting Babbage sobre recursos de aprendizaje de Raspberry Pi.

Bots de Twitter reales

Hace algún tiempo creé un bot de Twitter llamado pyjokes que twittea chistes de un módulo de Python que mantengo. El código es muy sencillo:

importación de piruetas
broma = pyjokes.get_joke()
twitter.update_status(status=joke)

Simplemente uso Cron para programar la tarea para que se ejecute.

Sigue a @pyjokes_bot en sus divertidas frases. Puedes leer más sobre pyjokes en la página web del proyecto pyjok.es, y puedes ver el código del bot de Twitter en GitHub.

Recientemente he hecho otro bot de Twitter que twittea enlaces de contenido de años anteriores desde el blog de la Fundación Frambuesa Pi.

rpi-otd.png

Es un poco más complejo porque mantiene una base de datos (de una sola tabla) de todas las entradas históricas del blog, pero el código del bot es muy simple. Simplemente consulta la base de datos de todos los mensajes con una fecha que coincide con el mes y el día de la fecha actual, escoge uno al azar y twittea el año, el título y un enlace:

date = datetime.now().date()
mes = fecha.mes
día = fecha.día
posts = db.get_posts_on_date(month=month, day=day)
post = elección aleatoria(posts)
año = int(puesto[$0027año$0027])
title = html.unescape(post[$0027title$0027])
slug = post[lug$0027]
url = $0027https://www.raspberrypi.org/blog/{}$0027.format(slug)
tweet = «En este día en {}: {} formato(año, título, url)
print($0027Tweeting: {}$0027.format(tweet))
twitter.update_status(status=tweet)

Puedes seguir este feed @raspberrypi_otd y ver el código del bot en GitHub.

COMPARTE EL ARTÍCULO!!!

Previous

Las mejores conferencias abiertas de hardware de 2019, celebrando el Día del Dominio Público, y más

Comparación de 3 ordenadores Linux disponibles en el mercado

Next

Deja un comentario

shares