mar 04 2010

Actualizar Twitter y Facebook con curl

Published by at 9:27 pm under Devel,PHP

Artículo enviado por A. Cuartango:

A veces resulta interesante poder actualizar la página de Twitter o la de Facebook desde la línea de comandos. Para ello podemos hacer uso de curl, la navaja suiza de la automatización de tareas Web. Veamos cómo:

“Twitter es más sencillo, ya que su API permite usar curl sin ninguna dificultad (el API está documentado siguiendo el enlace de la página principal de Twitter):

curl -u   USUARIO:PASSWORD   -d status="Hola desde curl. MENSAJE AQUI" http://api.twitter.com/1/statuses/update.json

En facebook hay que usar un script (Gracias Alste):

<?php
//
// change Facebook status with curl
// Thanks to Alste (curl stuff inspired by nexdot.net/blog)
 
function setFacebookStatus($status, $login_email, $login_pass) {
echo "Entra";
   $debug = false;
   //CURL stuff
   //This executes the login procedure
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?m&amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php');
   curl_setopt($ch, CURLOPT_POSTFIELDS, 'email=' . urlencode($login_email) . '&pass=' . urlencode($login_pass) . '&login=' . urlencode("Log in"));
   curl_setopt($ch, CURLOPT_POST, 1);
   curl_setopt($ch, CURLOPT_HEADER, 0);
   //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
   curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   //make sure you put a popular web browser here (signature for your web browser can be retrieved with 'echo $_SERVER['HTTP_USER_AGENT'];'
   curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12");
   curl_exec($ch);
 
   //This executes the status update
   curl_setopt($ch, CURLOPT_POST, 0);
   curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
   $page = curl_exec($ch);
 
   curl_setopt($ch, CURLOPT_POST, 1);
   //this gets the post_form_id value
   preg_match("/input type=\"hidden\" name=\"post_form_id\" value=\"(.*?)\"/", $page, $form_id);
   //we'll also need the exact name of the form processor page
   preg_match("/form action=\"(.*?)\"/", $page, $form_num);
 
   curl_setopt($ch, CURLOPT_POSTFIELDS, 'post_form_id=' . $form_id[1] . '&status=' . urlencode($status) . '&update=' . urlencode("Update status"));
   //set url to form processor page
   curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com' . $form_num[1]);
   curl_exec($ch);
 
   if ($debug) {
       //show information regarding the request
       print_r(curl_getinfo($ch));
       echo curl_errno($ch) . '-' . curl_error($ch);
       echo "<br><br>Your Facebook status seems to have been updated.";
   }
   //close the connection
   curl_close($ch);
}
 
setFacebookStatus("Esto es una prueba de publicacion automática desde línea de comandos", "CUENTA_FACEBOOK","CLAVE_FACEBOOK" );

Con esto y un poco de scripting podremos publicar lo que queramos en una cuenta de facebook y twitter.

7 responses so far

7 Responses to “Actualizar Twitter y Facebook con curl”

  1. Iñigoon 04 mar 2010 at 11:58 pm

    No he podido aguantarme la pregunta.

    ¿Para que demonios puede servir actualizar tuiter o facebook desde la linea de comandos?
    :O

  2. adminon 05 mar 2010 at 12:33 am

    @Iñigo: para poder enlazar tuberías. Ejemplo cogido “al azar”: el RSS de un sitio web lo quieres encauzar hacia Twitter (o Facebook) …

  3. jgasteizon 05 mar 2010 at 12:53 am

    @iñigo: a mí, para hacer la gracia en administración de sistemasXD

  4. Urkoon 05 mar 2010 at 3:11 am

    Y ya, si me añades cómo actualizar identi.ca de un plumazo, me haces feliz.

    Ya, ya, que me lo puedo mirar yo solito, ya lo sé…

  5. Joseon 05 mar 2010 at 9:22 am

    Por linea de comandos, por API, por un wysiwyg…

    Creo que al final del camino, lo importante es: “escribe UNA VEZ contenido, publícalo donde quieras”.

    A tal efecto, yo vengo usando desde hace ya mucho tiempo txt2tags (txt2tags.sourceforge.net) para redactar mi contenido y después, mediante mini scripts, API’s… publicarlo en varias plataformas. Aun así, no he encontrado una herramienta (que debiera existir) que sea capaz de realizar este trabajo, publicar tu contenido con varias plataformas.

    ¿Eres conocedor de alguna?

    Un saludo y enhorabuena por tu blog. Te visito todos los días.

  6. Ochotoon 05 mar 2010 at 11:56 am

    Ala, ya puedes añadir también la de tuenti :)

    http://github.com/scromega/tuentiAPI

  7. dmoron 02 jul 2011 at 8:31 pm

    para que va a servir? iñigo… para automatizar tareas!!!

Trackback URI | Comments RSS

Leave a Reply

« Back to text comment