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&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.
No he podido aguantarme la pregunta.
¿Para que demonios puede servir actualizar tuiter o facebook desde la linea de comandos?
:O
@Iñigo: para poder enlazar tuberías. Ejemplo cogido «al azar»: el RSS de un sitio web lo quieres encauzar hacia Twitter (o Facebook) …
@iñigo: a mí, para hacer la gracia en administración de sistemasXD
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é…
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.
Ala, ya puedes añadir también la de tuenti 🙂
http://github.com/scromega/tuentiAPI
para que va a servir? iñigo… para automatizar tareas!!!
¿Hay alguna forma de actualizar el código? Ya está obsoleto 🙂