Ganar visibilidad en Twitter: potencialo con Azure
Hola a todos.. hoy les vamos a compartir una idea en la que estamos trabajando con Ale Banzas. Lo que estamos armando consiste en un programa que corre cada determinada cantidad de tiempo en un Azure Worker Role. Este programa, se conecta a la API de Twitter y le da de forma automática “favorite” a tweets que tengan un hashtag que nosotros le indiquemos.
Esto es súper útil para lograr visibilidad sobre temas particulares que a nosotros nos interesen. Yo tengo este worker corriendo en un servicio propio, y obtuve bastantes nuevos seguidores al cabo de algunas corridas.
Su funcionamiento en 140 caracteres
Sencillo: le indicamos a qué hashtags queremos darle favorite. El worker corre cada 15 minutos (por default, se puede cambiar), y busca todos los últimos tweets con ese hashtag. Esos tweets (sus ids) son guardados en una cola de mensajería (Azure Queue) para luego ser procesados asincrónicamente.
Hay otro proceso que también corre cada determinado tiempo, este proceso lo que hace es tomar esos tweets de la cola de mensajería y procesarlos, es decir, darles favorite.
Un pequeño diagrama del funcionamiento:
Cómo implementarlo
En primer lugar, necesitas instalar Visual Studio 2013 lo cual podés hacer desde acá. También, vas a necesitar una cuenta en Microsoft Azure. Si aún no tenés una, acá te dejo opciones para que empieces gratis:
Una vez seteado el ambiente. Descargate la última versión del código de acá: https://1drv.ms/1qR0loc.
Si preferís no instalar Visual Studio y correrlo desde una máquina virtual en Azure, en la primer parte de esta guía podés ver cómo hacerlo.
Descargado el archivo .zip del código, buscamos el archivo .sln (solution, y doble click ahí). Deberíamos ver algo como esto:
Usar las credenciales de nuestra cuenta
Lo que necesitamos hacer ahora es registrarnos como desarrolladores de Twitter, y avisarle que nuestra aplicación va a estar consumiendo su API. Para eso vamos a https://apps.twitter.com/ y le damos click a Create new App. Llenamos los datos los cuales son sencillos, y le damos Create.
Buscamos en Application Settings el link de manage API keys:
Nos copiamos esos 4 valores, los cuales debemos reemplazar en WorkerRole.cs:
Lo que estamos haciendo acá, es hacer que los tweets salgan de nuestra cuenta.
Elegir nuestros propios hashtags
Ahora debemos elegir cuales son los hashtags a los que vamos a darle favorite. Eso simplemente lo hacemos editando la lista que vemos en pantalla.
NOTA: Sí, obvio, ya sabemos que esto es un asco. Esto es una prueba de concepto y te invito a que estos valores los saques de configuración, de la base, de otro storage y de cualquier lugar que evite hardcodearlo .
Crear cuenta de storage en Azure
Ahora necesitamos crear una cuenta de storage en donde guardaremos los tweets a procesar. Podemos hacerlo sin salir de Visual Studio de la siguiente forma:
Elijo el data center de Brasil por motivos de latencia. Podés probar el que quieras.
Una vez creado el storage, lo que debemos hacer es indicar en la configuración, que utilice estos mismos. Para eso, tomamos las credenciales y las reemplazamos en el archivo de config:
Lo copiamos, y reemplazamos detrás de value=”acá ponés el valor” .
Proceso de publicación del worker role
Esta parte es sencilla, así que va todo con imágenes:
Le damos Publish y al cabo de unos minutos ya estará subido. Acordate siempre que podes manejarlo desde https://manage.windowsazure.com.
Comentarios finales y oportunidades de mejora
Como te contaba más arriba, esto es una idea que nos surgió y decidimos probar. Hay miles de otras cosas que se pueden hacer con esta API, desde retweets automáticos hasta el consumo de la streaming API. Si se te ocurre algo en particular para que implementemos, dejanos tu feedback en los comentarios.
Tené en cuenta también que la API de Twitter acepta hasta cierto tu número de requests o pedidos por minuto, y por eso vas a ver los delays en los workers. Te recomiendo que no cambies esos números porque Twitter puede llegar a bloquearte por hacer tantos requests.
Espero que te sirva!