Twitter Habits: un script en Ruby
La mejor forma de aprender algo nuevo es aplicándolo a algo que ya sabes o te interesa. Estaba aprendiendo a usar HPricot (un gem de Ruby para procesar páginas web y hacer web scraping). Me hice un script sencillo que recoge las entradas de un usuario de Twitter y las tabula por horas.
Por ejemplo, este es el resultado para el usuario de DrMad:
Gathering data for drmad [...........................] 00 = ( 19) ****** 01 = ( 28) ********** 02 = ( 17) ****** 03 = ( 5) * 04 = ( 5) * 05 = ( 2) 06 = ( 5) * 07 = ( 5) * 08 = ( 16) ***** 09 = ( 34) ************ 10 = ( 41) ************** 11 = ( 41) ************** 12 = ( 65) *********************** 13 = ( 28) ********** 14 = ( 20) ******* 15 = ( 23) ******** 16 = ( 26) ********* 17 = ( 38) ************* 18 = ( 24) ******** 19 = ( 20) ******* 20 = ( 25) ********* 21 = ( 13) **** 22 = ( 27) ********* 23 = ( 24) ******** Total twits: 551
No nos cabe duda que este chico no duerme.
A ver, veamos el de Jason Kottke:
Gathering data for jkottke [..........] 00 = ( 0) 01 = ( 0) 02 = ( 0) 03 = ( 0) 04 = ( 0) 05 = ( 1) * 06 = ( 4) **** 07 = ( 5) ***** 08 = ( 12) ************ 09 = ( 16) **************** 10 = ( 15) *************** 11 = ( 16) **************** 12 = ( 17) ***************** 13 = ( 15) *************** 14 = ( 11) *********** 15 = ( 11) *********** 16 = ( 19) ******************* 17 = ( 9) ********* 18 = ( 6) ****** 19 = ( 11) *********** 20 = ( 12) ************ 21 = ( 6) ****** 22 = ( 5) ***** 23 = ( 3) *** Total twits: 195
¿Pude haber usado la API de Twitter? Sí. ¿Te has dado cuenta que ignoras la primera entrada? Sí. Estaba aprendiendo a usar HPricot y no tratando de hacer algo cool pero inútil. Por eso lo hace de la manera más ineficiente posible.
Oh, y no sé por qué la página de César Soplín tiene tags distintos a los demás. ¿Twitter le teme al policía de la usabilidad?
El script en cuestión lo pueden descargar de aquí: twitter_habits.rb
Requiere HPricot 0.6. Lo ejecutas así: ruby twitter_habits.rb usuario
Como siempre, si se rompe, te puedes quedar con las dos piezas.