Raspberry Pi

Haz tu propio bot Twitter con Python y Raspberry Pi

Automatiza tus tweets con un código Python simple que se ejecuta en un Raspberry Pi

Es muy sencillo escribir un bot de Twitter usando Python y una Raspberry Pi es la herramienta perfecta para ejecutar el código; En lugar de dejar un PC o portátil conectado permanentemente, puedes dejar tu Raspberry Pi funcionando 24/7 y apenas se utilizará energía. Dicho esto, si no tienes un Raspberry Pi, la mayor parte de este tutorial seguirá funcionando para ti en un PC.

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 en vivo de Twitter, tal vez para leer tweets en tiempo real o para publicar automáticamente tweets.

La API es gratuita, pero tienes que tener una cuenta de Twitter y registrar tu aplicación para poder acceder a la API, pero eso es bastante fácil.

Comienza por ir a apps.twitter.com. Crea una nueva aplicación completando los campos necesarios: asegúrate de seleccionar Leer y escribir bajo los permisos de su aplicación. Esto generará una clave de consumidor, secreto de consumidor, token de acceso y token secreto de acceso. Necesitarás estas cuatro claves para conectarte a tu cuenta de Twitter desde tu código de Python. No compartas 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.

sudo pip3 install twython

Abre tu editor de Python y crea un nuevo archivo. Guárdalo como auth.py e inserta tus propias claves de API en este código de ejemplo:

consumer_key        = 'ABCDEFGHIJKLKMNOPQRSTUVWXYZ'
consumer_secret     = '1234567890ABCDEFGHIJKLMNOPQRSTUVXYZ'
access_token        = 'ZYXWVUTSRQPONMLKJIHFEDCBA'
access_token_secret = '0987654321ZYXWVUTSRQPONMLKJIHFEDCBA'

En otro archivo, escribe este programa simple para probar si puedes enviar un tweet:

from twython import Twython

from auth import (
    consumer_key,
    consumer_secret,
    access_token,
    access_token_secret
)
twitter = Twython(
    consumer_key,
    consumer_secret,
    access_token,
    access_token_secret
)
message = "Hello world!"
twitter.update_status(status=message)
print("Tweeted: {}".for

Guarda y ejecuta este archivo. Debe enviar un tweet diciendo “Hello world!” Desde tu cuenta.

Si recibes un error, comprueba que las claves de la API se copiaron correctamente.

Ahora trata de añadir algo de aleatoriedad a tu programa. Agrega el módulo random en la parte superior:

import random

Añade una lista de mensajes y selecciona uno al azar:

messages = [
        "Hi Twitter",
        "Hello from Python",
        "Hello from my Raspberry Pi",
        "I'm a bot",
]

A continuación, cambia tu código para elegir un mensaje aleatorio de la lista antes de twittearlo:

message = random.choice(messages)

Es posible que también desees probar imágenes:

message = "Hello world - here's a picture!"
with open('/home/pi/Downloads/image.jpg', 'rb') as photo:
    twitter.update_status_with_media(status=message, media=photo)

Leer Twitter

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

from twython import TwythonStreamer
from auth import (
    consumer_key,
    consumer_secret,
    access_token,
    access_token_secret
)
class MyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            print(data['text'])
stream = MyStreamer(
    consumer_key,
    consumer_secret,
    access_token,
    access_token_secret
)
stream.statuses.filter(track='raspberry pi')

Este código sigue 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. Los datos son un diccionario que contiene el texto del tweet, junto con muchos metadatos. Aquí, acabamos de imprimir el contenido de tweet. Puede dejarlo en ejecución 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.

En este ejemplo se imprime el nombre de usuario de la cuenta que tweeted, así como el contenido de tweet:

class MyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            username = data['user']['screen_name']
            tweet = data['text']
            print("@{}: {}".format(username, tweet))

Para obtener más información, consulta 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 funcione 24/7, puedes instalarlo en un servidor web o ejecutarlo en un Raspberry Pi en casa.

Componentes físicos

Con un Raspberry Pi, puedes agregar fácilmente componentes físicos, como botones y LED a tu programa de Twitter. Por ejemplo, puedes configurarlo para que envíe un tweet aleatorio cuando se presiona un botón físico:

from gpiozero import Button
button = Button(2)
button.wait_for_press()
message = "Hello world!"
twitter.update_status(status=message)
print("Tweeted: {}".format(message))

O envía un tweet con la temperatura que proporciona Sense Hat:

from sense_hat import SenseHat

sense = SenseHat()

message = "The temperature is currently {:2.2f} 
degrees".format(sense.temperature)

twitter.update_status(status=message)

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

from gpiozero import LED

led = LED(3)

class MyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            led.on()
            username = data['user']['screen_name']
            tweet = data['text']
            print("@{}: {}".format(username, tweet))
            sleep(10)
            led.off()

O desplaza el tweet en una pantalla Sense HAT:

from sense_hat import SenseHat

sense = SenseHat()

class MyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            username = data['user']['screen_name']
            tweet = data['text']
            sense.show_message("@{}: {}".format(username, tweet))

Estos son solo algunos ejemplos de lo que puedes hacer con Raspberry Pi, Python y Twitter.

Etiquetas

Deja un comentario

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

Close