Actualización: Han habido modificaciones recientes en la API de Twitter. Te recomendamos revisar antes el siguiente enlace:
https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api
Este post es más que nada un apunte personal, por si algún día necesito recuperarlo, pero lo dejo a disposición de la gente por si a alguien le interesa. Lo que veremos es el código mínimo necesario para crear un bot que actualice el status de una cuenta de Twitter (X) a partir de una fuente sencilla en PHP.
El código 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 código de forma lineal, sin funciones ni clases para que se entienda más fácilmente, pero esta claro que para hacer un bot más completo sería bueno usar alguna clase PHP creada para la api de twitter (o crear una propia) y organizar el código de forma un poco más seria.
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 la llamada curl_setopt($c, CURLOPT_POST, true); curl_setopt($c, CURLOPT_POSTFIELDS, $twitterPost ); curl_setopt($c, CURLOPT_USERPWD, $twitterUsername . ':'. $twitterPassword); curl_setopt($c, CURLOPT_VERBOSE, 1); curl_setopt($c, CURLOPT_NOBODY, 0); curl_setopt($c, CURLOPT_HEADER, 0); curl_setopt($c, CURLOPT_USERAGENT, $twitterUserAgent ); curl_setopt($c, CURLOPT_FOLLOWLOCATION,1); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_HTTPHEADER, array('X-Twitter-Client: ', 'X-Twitter-Client-Version: ', '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);