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.