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

Similar Posts

9 Comments

  1. 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?

  2. 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

  3. A mi no me funciona, metas el usuario que metas siempre entra en el bucle while y nunca entra en el bloque del if.

  4. $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.

Comments are closed.