En ésta entrada vamos a realizar un Bot que se ejecutará desde Jupyter Notebooks y que nos permitirá publicar Tweets desde nuestra cuenta cada cierto tiempo.
Antes de seguir, ¿Qué necesito saber?
En estos tipos de entradas es necesario saber al menos algo de Python, básico, no es necesario que seamos unos maestros del lenguaje. También algo de la librería, al final dejaré en las referencias la documentación oficial de Tweepy en caso de tener dudas. También puedes ir a mis entradas pasadas donde he hablado sobre Python y Tweepy.
Requisitos
- Aplicación en Twitter para obtener las llaves (Cosumer Key y Access Token)
- Tweepy
- Python 3
Haciendo autenticación con Tweepy
Comencemos haciendo la autenticación a con Tweepy y nuestras credenciales, no profundizaré mucho en esto ya que en los pasados tutoriales/entradas tenemos más detalles de donde salen cada una de los tokens/keys.
Empezamos por importar Tweepy y Time a nuestro Jupyter Notebook.
1
2
|
import tweepy import time |
Con nuestras librerías listas ahora si podemos hacer las variables de conexión, recuerden que necesitamos nuestos tokens/keys de la aplicación previamente creada en Developer Twitter.
1
2
3
4
5
|
# Alamcenamos las claves access_token = "tu-access-token" access_token_secret = "tu-access-key" consumer_key = "tu-consumer-key" consumer_secret = "tu-consumer-secret" |
Con las llaves listas creamos la autenticación en Twiiter y si todo es correcto, podremos continuar con el pequeño Bot.
1
2
3
4
5
6
|
# Autenticacion en Twitter auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) # Creamos el objeto necesario para autenticarnos api = tweepy.API(auth) |
Solo para confirmar, hagamos un Tweet:
1
2
|
# Probamos un tweet en nuestro Timeline api.update_status( "Que onda #Tweepy?" ) |
Haciendo magia utilizando la librería Time
Hemos llegado a la parte que nos interesa de este post, ¿Cómo hacer que los tweets sean más automáticos?, esta pregunta podemos «resolverla» (entre comillas) utilizando la librería Time.
No profundizare mucho en como funciona la librería o qué métodos incluye (porque son muchos y son útiles para distintas opciones, por supuesto te dejo el link de la documentación oficial por si quieres darle una leida). Solo pondremos atención al método time.sleep().
El método sleep() hace algo muy sencillo, hace que el hilo donde estamos ejecutando se detenga por la cantidad de segundos que le asignemos. Vamos a hacer una prueba e imprimamos un texto que se imprima despues de 5 segundos:
1
2
3
4
|
#Vamos a imprimir un texto y 5 segundos despues otro texto print ( "Texto 1" ) time.sleep( 5 ) print ( "Texto 2 despues de 5 segundos" ) |
Como puedes ver, el segundo texto se imprimió 5 segs despues del primer texto, pero ¿como podemos saber que de verdad fueron 5 segundos? (no es que no crea en el poder de las maquinas pero…). Fácil, ocupemos otro método, strftime().
Método strftime()
Éste método nos permite convertir una tupla en distintos formatos de fechas. Podemos ver una completa explicación en la documentación, en resumidas cuentas recibe dos parámetros, el primero es el fomato al cual sera convertida la tupla y el segundo es cuál es el timepo a convertir. Referente al segundo parámetro podemos decir que es opcional y que el valor por defecto será el tiempo (Fecha y hora local).
Ejecutemos esta funcion para ver mas a detalle como es que podemos utilizarla.
1
2
3
4
|
#Vamos a imprimir un texto y 5 segundos despues otro texto con hora print ( "Texto 1 a las {}" . format (time.strftime( "%T" ))) time.sleep( 5 ) print ( "Texto 2 despues de 5 segundos a las {}" . format (time.strftime( "%T" ))) |
Perfecto ahora combinemos Tweepy y el metodo Sleep() para hacer tweets cada X segundos.
Haciendo Tweets automáticamente
Haremos que la publicación de nuestros tweets sea de manera automática, para hacer esto nos apoyaremos de un ciclo For y una lista con los tweets a publicar.
1
2
3
4
5
6
7
8
9
10
|
# Publiquemos 3 tweets automaticamente tweets = [ "Meta 1, aprender #Python" , "Meta 2, Aprender #Tweepy" , "3ra Meta, usar ambos para publicar tweets automáticamente" ] # Por cada tweet, publicamos en nuestro Twitter y esperamos 20 segundos para hacer el otro tweet for tweet in tweets: t_result = api.update_status(tweet) print ( "Tweet: {} publicado a las {}" . format (t_result.text, time.strftime( "%T" ))) time.sleep( 20 ) |
Como resultado al terminar veremos que los tweets fueron publicados correctamente y podemos ver la hora al final.
Ya tenemos nuestro «Bot», ahora hay que tunearlo para que haga lo que necesitemos, ¿Te imaginas mandarle felicitaciones a tu mejor amigo haciéndole una mención?, ¿Postear tus comentarios a una página o una película? o que tal el ¿Publicar partes de un libro?
Este pequeño tutorial podría servirte para hacer algo como lo que te pregunte arriba, así que sigue atento a las entradas del blog que quizá hagamos un pequeño bot que nos publique partes de nuestro libro favorito.
Con esto termino la entrada de hoy, ojalá te agrade el contenido, compártelo y dame una mención en Twitter para saber si te gustó o no, trataré de hacer un bot para que responda a cada mención que tenga en Twitter. Queda pendiente el Jupyter Notebook para que lo puedan descargar.