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!
Comments
Anonymous
October 25, 2014
Hola, estoy viendo esto y de verdad esta genial, muchas gracias por su trabajo, seguiré más de cerca todo esto, gracias nuevamenteAnonymous
October 26, 2014
Hola, quisiera saber si le darán continuidad al proyecto, saludosAnonymous
October 28, 2014
Francisco: Muchas gracias! Espero que te sirva m10.com.mx: Sí, tenemos pensado pronto hacerle varias mejoras e inclusive hacer similares para otras redes sociales. El aporte de la comunidad tambien es bienvenido!!Anonymous
November 18, 2014
Marcelo, no me aparece la opción de "Storage" en el Visual Studio 13 y me dice que el proyecto no es compatible. ¿Que puede ser?Anonymous
November 18, 2014
@Nicolás, tenés instalado el SDK de Azure?Anonymous
November 20, 2014
Nicolas, revisa que tengas el explorador de servidores Azure, si no lo tienes tienes que tener el sdk de azure y volver a comprobarAnonymous
November 25, 2014
Podrían compartir la página de la documentación de la API, gracias!Anonymous
November 25, 2014
Todo esta bien, a la hora de ejecutar el query con mis hashtags me regresa los tweets, sin embargo falla cuando quiere darle fav, y me sale: Cannot evaluate expression because the current thread is in a stack overflow state. Aqui es donde truena: TwitterServiceInstance.FavoriteTweet(new FavoriteTweetOptions { Id = tweet.Id );Anonymous
November 25, 2014
Hola Marcelo, sugiero que se utilice otra API, pues la documentación dice lo siguiente: This project is no longer actively developed by its creator. v2.3.1 is the final release. If someone forks this project and proves active and interested ongoing development, I will transfer this repo to them. Forks must respect OSS and copyright law with respect to attribution, etc., etc. github.com/.../tweetsharp Posiblemente por eso tengo problemas con los FAVs Gracias!Anonymous
November 25, 2014
Marcelo, disculpa ya arregle mi problema, la API aún funciona, lo que pasa es que cometí el error de no habilitar los privilegios de escritura para mi app de twetter. Cuando se cambia a Read, write, and direct messages hay que darle a regenerar el ticket de acceso para que lo actualice. SaludosAnonymous
December 01, 2014
@Arturo gracias!! De todas formas estoy de acuerdo, tendríamos que actualizar la API para agregar nuevas funcionalidades. Saludos!Anonymous
January 25, 2015
It did not work ! I followed the tutorial step by step, but at the end when I published, there is a message which indicate what "Instance 0 of AsyncTwitterBot role is busy" :(Anonymous
January 25, 2015
It is ok now but any changes on my twitter account... When there is a hashtag on Twitter that i put in VS, my twitter doesn't put it in favorite. It seems that the plugin doesn't work but thank you for the idea..Anonymous
January 29, 2015
Marcelo, he seguido el tutorial paso a paso, he creado la app con permisos, he creado el storage y lo he publicado y no funcino. Hay que hacer algo mas aparte de lo que indicas en el tutorial?. SaludosAnonymous
January 30, 2015
@Dosn and @Xesco, Thanks for the feedback guys, we'll look into it and see how can we get it fixed and improved. Stay tuned. Marcelo