He estado jugando en nuevo experimento (ya no los quiero llamar proyectos por que siempre quedan si acabar) alrededor de twitter, tratando de captar la mayor información posible proveniente de los tweets de los usuarios, La recolección de datos puede ser muy frustrante si utilizamos el API normal que twitter nos ofrece. El en API normal solo tenemos acceso a los últimos 20 tweets del timeline publico cada minuto, haciendo la recolección de datos insuficiente.
Investigando encontré un API Alpha, Streaming API Documentation lo extraordinario que tiene este API es que al abrir una petición, twitter envía los últimos tweets publicados en tiempo real hasta que la conexión se termine, ya sea por error de conexión o por cualquier otro motivo. Esto nos da acceso a una cantidad enorme de información.
Existen varios métodos de conexión, de estos métodos, el mas útil para la recolección de información es el spritzer el cual nos da una porción de los últimos tweets del timeline publico y es con este método con el cual haremos el ejemplo de recolección de información.
Para acceder a cualquier método de este API es necesario estar autenticado ya sea con una cuanta valida de usuario de twitter o con credenciales de un “cliente” aprobado.
La documentación del API dice.
spritzer
Returns a proportion of all public statuses, suitable for small projects that don’t require a statistically significant sample. Publicly available.
URL: http://stream.twitter.com/spritzer.format
Formats: xml, json
Method(s): GET
Returns: stream of status elements
Con esta información y sabiendo que necesitamos mandar nuestras credenciales el URL de petición queda de la siguiente forma:
http://user:password@stream.twitter.com/spritzer.json.
Esto nos devolverá los tweets conforme van siendo publicados en twitter, bien con esta URL solo nos queda obtenerlos y parsearlos usando PHP, creamos un archivo php llamado “tweetstream.php” con el código que consta de 4 lineas el cual queda así:
$fp = fopen("http://user:password@stream.twitter.com/spritzer.json","r"); while($data = fgets($fp)) { $tweet = json_decode($data); echo $tweet->user->screen_name . " : " . $tweet->text . "nr"; }
Ahora desde consola solo queda ejecutar el comando:
php tweetstream.php
El script se ejecutara hasta que la conexión se pierda o el usuario lo cancele, el resultado de esto es:
Kimble09 : Damm I just saw they moved the 10PM news too 11PM here in NY 4 the Wendy Williams Show, that’s big! ! ! ! ! ! ! !
mariahmedina5 : Tortillas and sour cream! 😉
PerakExpress : Kes Anwar: Tangguh hingga 2:30 Ptg nanti.
Cait1129 : Have the hourse to myself for a few days starting tomorrow. But probably will be too busy to enjoy it.
mommiekaren : LAKESIDE BISTRO TOMORROW NIGHT AND A EVENING OF WINE AND WIT. SHOULD BE ENJOYABLE.
Esta información se puede almacenar de manera simple, ya sea meterla a base de datos o a archivos de texto usando fopen, fwrite, esto ya es cuestión de lo que quieras hacer con ella.
Espero les sea de ayuda.
Saludos! 8)
no lo pude hechar a andar, ocuparé alguna libreria o algo similar?, aunque tambien como dicen es un api experimental, podria ser que ahorita no esté funcionando bien