Acceder a Streaming API de PHP
Para aquellos que necesiten realizar aplicaciones sobre Twitter que tiren de la Streaming API, por ejemplo monitorear o que se dice de una marca, les va a venir muy bien este código:
set_time_limit(0);
$query_data = array('track' => 'lo que quieres buscar');
$user = 'username'; // replace with your account
$pass = 'password'; // replace with your account
$fp = fsockopen("stream.twitter.com", 80, $errno, $errstr, 30);
if(!$fp){
print "$errstr ($errno)\n";
} else {
$request = "GET /1/statuses/filter.json?" . http_build_query($query_data) . " HTTP/1.1\r\n";
$request .= "Host: stream.twitter.com\r\n";
$request .= "Authorization: Basic " . base64_encode($user . ':' . $pass) . "\r\n\r\n";
fwrite($fp, $request);
while(!feof($fp)){
$json = fgets($fp);
$data = json_decode($json, true);
if($data){
//
// Do something with the data!
//
}
}
fclose($fp);
}
El parámetro track se puede cambiar por follow (usando IDs numéricos) para saber que dice algún usuario y que dicen los que le mencionan o retuitean.
Vía / AF-Design
Buen articulo, pero es necesario ingresar un user y pass? no puede trabajar sin login? que pasa en ese caso con el control de Oauth que pide twitter para las cuentas?
No necesita OAuth porque tira de Basic Auth, yo también creÃa que iba a ser necesario OAuth, pero lo he probado y funciona perfectamente.
Saludos
Se puede también partir de: Phirehose (https://github.com/fennb/phirehose)
Gracias por el enlace, Nigeon
A mi no me funciona, metas el usuario que metas siempre entra en el bucle while y nunca entra en el bloque del if.
cmaciasg, que es lo que pones sustituyendo a ‘lo que quieres buscar’ ? usa “facebook” o un TT de Twitter
Saludos
$query_data = array(‘track’ => ‘facebook’);
Lo he hecho y sigue igual, no me arroja nada. Pero ya te decÃa, que se comporta igual poniendo el username y la password que quieras.
El problema es que fgets($fp); no me devuelve nada.
Pregunta tonta, pero has usado un usuario y contraseña válidos?
Has mirado si te devuelve algo en $errstr?
Saludos