Follow me @Tmeister

Consumir Streaming de Twitter usando php

ESCRITO POR Tmeister EN July - 15 - 2009

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 . "\n\r";
}

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)

One Response to “Consumir Streaming de Twitter usando php”

  1. Punksolid says:

    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

Acerca de mi
Enrique Chavez

Enrique Chávez también es conocido como @Tmeister es un desarrollador, emprendedor, poeta y loco.

Geek autodeclarado y apasionado de todo lo que tiene que ver con tecnología y desarrollo.

Cuenta con una experiencia de más de 7 años en el ramo del desarrollo, creando, sobre todo, aplicaciones web en la empresa Sapotek.

A finales del 2008 crea, junto con 3 colegas, la consultoría llamada AureaCode, enfocándose a brindar servicios de desarrollo web en todas sus variantes.

Si necesitas algún tipo de información o consulta por favor no dude en escribir.

View Enrique Chávez's profile on LinkedIn

Carlos Enrique Chavez Garcia's VisualCV

RSS Feed

Links Patrocinados