Bot de Markov #03: Preparar la movida en Twitter
Ha llegado el momento.
Hace falta una cuenta propia para el bot. Estoy bastante seguro que si usárais vuestra cuenta actual, el bot simplemente publicarĂa en vuestro nombre con vuestra cuenta. No sĂ© si eso es lo que querĂ©is, pero no es mi caso.
Si no se tiene idea de quĂ© nombre ponerle, el nombre de usuario (o el de la persona a quien se lo hacĂ©is - aseguraos de pedir permiso o que sea alguien que no se vaya a molestar, u os podĂ©is meter en un lĂo) seguido de “_ebooks” o de “_txt” es una convenciĂłn bastante tĂpica de hacer bots de Markov en Twitter.
Una vez creada la cuenta del bot, voy a apps.twitter.com desde dicha cuenta y le doy a crear una nueva, rellenando los campos necesarios (si al campo de página web no sabéis qué ponerle, como es mi caso, poned el perfil de la cuenta, leré lerele). Los permisos de esta app tienen que ser leer y escribir (”Read and write”).
Ahora serĂa un buen momento para decidir cĂłmo organizar los archivos. Yo por ejemplo tengo el cĂłdigo de la clase Markov en un archivo llamado markov.py, y luego un main.py en la misma carpeta que importa el markov.py.
Después de crear la app, en la pestaña de “Keys and Access Tokens” (no sé cómo será en castellano pero probablemente algo de “clave” o “tokens”), le doy a crear un nuevo Access Token en la parte de abajo. Y vuelvo al archivo de Python y me guardo en dos variables como strings, pongamos algo como esto:
Cambiando obviamente el valor del string a mis claves. No compartáis las vuestras por ahĂ (por ejemplo en un repo de github pĂşblico - mĂ©telo en un archivo separado y usa el gitignore por ejemplo) porque si no, cualquiera podrĂa hacer un script que posteara con la cuenta de vuestro bot. Yo simplemente me espero a un punto del proyecto en que deje de tenerlos temporalmente en este archivo de python, antes de subirlo a ningĂşn repo.
Ahora toca instalarse la librerĂa tweepy, por ejemplo, o si conocĂ©is una que os guste más, pues esa. Yo tiro de tweepy. Y meto estas lĂneas en la cabecera, copiadas del tuto:
El import de tweepy es bastante autodescriptivo; es el wrapper de la API de Twitter en general. El de sleep de time es para forzar un tiempo de espera y evitar que el bot estĂ© intentando tuitear todo el rato, porque Twitter puede banearlo por spammer; y me ha parecido buena idea. Si por ejemplo queremos tuitear 3 veces al dĂa, 24h/3=8h, y sleep funciona en segundos, tenemos que 8h·3600s/h=28800s, que es el nĂşmero de delay que pasarle a sleep. Aunque de momento para probar que funciona voy a probar con unos 300s (5 min).
Para hacer el “boot up” del bot, al comienzo del main (o vosotros a pelo en el archivo, sin main ni tonterĂas, si a alguien le va ese rollo) pongo:
Esto es básicamente “encender” lo necesario de la librerĂa de tweepy para que el bot haga log in como la cuenta creada antes.
Yo, además, me he hecho ésto al principio del archivo para no tener que pensar luego cómo se manda un tuit o preocuparme de olvidarme el delay o no:
Una tonterĂa de funciĂłn pero me gusta cĂłdigo legible. Y no hay nada más legible que una funciĂłn que se llama “tuitear”.
Intento ejecutar el programa con lo que ya hay para asegurarme que no me dejo nada básico, con un tuit tonto de prueba; algo como tweet(api, 'cowabunga'). Y ejecuto el programa con el comando python main.py.
...Sobre todo hay que acordarse de poner los paréntesis al declarar una función.
Vuelvo a probarlo, cruzo los dedos y...
Perfecto. El prĂłximo miro cĂłmo adaptar la clase Markov a un usuario de Twitter, en vez de leer un texto de un archivo.
PD: Y sobre todo, no ejecutéis la prueba más de una vez sin cambiar el tuit a enviar, que Twitter rechaza duplicados consecutivos.
< - >












