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.
< - >












