Está en la página 1de 2

Este post es ms que nada un apunte personal, por si algn da necesito recuperarlo, pero lo dejo a

disposicin de la gente por si a alguien le interesa. Lo que veremos es el cdigo mnimo necesario
para crear un bot que actualice el status de una cuenta de twitter a partir de una fuente sencilla en
PHP.
El cdigo mostrado es el usado para actualizar el usuario de twitter @tiempo_bcn. Una cuenta que
simplemente va mostrando cada cierto tiempo el tiempo actual en la ciudad de Barcelona. Para
realizarlo usamos la Google Weather Api y como no, la Api de twitter.
De esta forma, cada vez que se lanza el script se crea un nuevo tweet con el clima actual en
Barcelona para @tiempo_bcn... Muestro el cdigo de forma lineal, sin funciones ni clases para que
se entienda ms facilmente, pero esta claro que para hacer un bot ms completo sera bueno usar
alguna clase PHP creada para la api de twitter (o crear una propia) y organizar el cdigo de forma
un poco ms seria.
<?
// rescatamos la informacin sobre el tiempo
$googleWeatherUrl = 'http://www.google.com/ig/api?ie=utf-8&oe=utf8&hl=es&weather=barcelona,spain';
$weather = simplexml_load_file($googleWeatherUrl);
// Formamos el string del nuevo status a publicar
$current_conditions = $weather->weather->current_conditions;
$status = "#tiempo en #Barcelona : " . $current_conditions->temp_c["data"] . ",
" . $current_conditions->condition["data"] . ". " .$current_conditions>wind_condition["data"];
// Variables de configuracion de la cuenta de twitter
$twitterUsername = 'tiempo_bcn';
$twitterPassword = '1234567890';
$twitterUserAgent = 'API';
$twitterRequestUrl = 'http://twitter.com/statuses/update.xml';
$twitterPost = 'status='.urlencode($status);
// iniciamos curl
$c = curl_init($twitterRequestUrl);
// configuramos
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
curl_setopt($c,
Client-Version:

la llamada
CURLOPT_POST, true);
CURLOPT_POSTFIELDS, $twitterPost );
CURLOPT_USERPWD, $twitterUsername . ':'. $twitterPassword);
CURLOPT_VERBOSE, 1);
CURLOPT_NOBODY, 0);
CURLOPT_HEADER, 0);
CURLOPT_USERAGENT, $twitterUserAgent );
CURLOPT_FOLLOWLOCATION,1);
CURLOPT_RETURNTRANSFER, 1);
CURLOPT_HTTPHEADER, array('X-Twitter-Client: ', 'X-Twitter', 'X-Twitter-Client-URL: '));

// lanzamos la llamada y sacamos los datos


$response = curl_exec($c);
$curlInfo = curl_getinfo($c);
if(intval($curlInfo['http_code'])==200)
{
$response = new SimpleXMLElement($response);
}

// cerramos curl
curl_close($c);

También podría gustarte