Publicidad
Anotaciones reducidas
La vida en un día: Película de un día en la Tierra
La vida en un día -Life in a day- es una película hecha por los propios usuarios de Youtube, que durante el día 24 de Julio del 2010 grabaron las cosas que pasaban en su vida durante ese día, y el director Kevin McDonald ha reunido en forma de película de un día en la Tierra.
De una hora y media de duración, veremos todo tipo de escenas en todas las partes del mundo, con una emotiva visión del mundo real tanto con sus cosas bellas y buenas, como con la más cruda visión del ser humano y su realidad.
Video: Las posibilidades de Kinect
Cuando oímos hablar de Kinect, no podemos evitar pensar en un "simple" aparato de detección de movimientos para videojuegos, y en cierto modo es así.
Lo bueno es que Microsoft ha lanzado una SDK de Kinect para que los usuarios puedan crear aplicaciones que exploten las capacidades del dispositivo, dando lugar a miles de ideas.
El siguiente video es al fin y al cabo con fines publicitarios, pero nos da que pensar acerca de las aún sin explotar posibilidades de Kinect. Disfrutadlo.
A Space Journey: Una excursión por el espacio en un video HD
A mi personalmente me encanta ver imágenes y fotografías del espacio, ver planetas lejanos, nebulosas o constelaciones. Es por eso que quiero compartir con ustedes A Space Journey, una excursión por el espacio en un video HD de Youtube, acompañado por una buena música y una ingente cantidad de fotografías espaciales.
Realmente merece la pena ver el video en pantalla completa y seleccionando que se reproduzca a 720p para disfrutar más del mismo.
[A Space Journey: Una excursión por el espacio en un video HD]
La historia de los Exploradores Web
Desde prácticamente los comienzos de Internet los Exploradores Web o Navegadores web nos han acompañado, haciendo las veces de herramientas indispensables para una navegación que a cada año que pasa se hace más cómoda y más intuitiva.
En Testking encuentro una imágen que contiene un gran esquema de la historia de los Exploradores Web desde el primer Nescape en 1994 hasta los navegadores modernos de este año 2011.
Una imágen interesante para conocer cuál ha sido la evolución en éste área.
Mapa de vuelos mundiales en 24 horas [Video]
Interesante video donde se muestra un mapa de vuelos mundiales en 24 horas, siendo cada punto amarillo la representación de un avión. Viendo el video podemos apreciar el impresionante afluente de vuelos en Estados Unidos y Asia, pero sobre todo la gran cantidad de vuelos en Estados Unidos.
Últimos comentarios
Fans en Facebook de Ruta Relativa
Lo más comentado
Lo más visto
Post al azar
Opera 10.50 ya disponible
Publicado por KeLDroX el día 03/03/2010Guardado en Aplicaciones,Web
¿Cual es el tamaño máximo para título, description y url?
Publicado por sergiocius el día 28/04/2010Guardado en SEO
Canal Buzz Televisión gratis en Internet
Publicado por KeLDroX el día 09/12/2009Guardado en Internet
Linux en PlayStation 3 v.3.21
Publicado por sergiocius el día 08/04/2010Guardado en Videojuegos
Animación de un Crash Test Dummy en Stop Motion
Publicado por sergiocius el día 10/05/2010Guardado en Humor,Videos
Blogger es la red de blogging adquirida por Google en la que, en unos pocos pasos, podemos tener nuestro propio blog de calidad sin conocimientos previos de programación.
Hay ocasiones en las que nos es útil poder postear automáticamente en nuestro blog tras realizar acciones, por ejemplo si tenemos una tienda online y nos gustaría indicar que cierto producto interesante vuelve a tener stock por fin. Para ello he desarrollado una clase para poder escribir un post en Blogger usando cUrl y PHP.
He querido hacer el proceso lo más sencillo posible, es decir, que con pocas líneas de código podamos postear en Blogger sin mayor problema. Paso a continuación a mostrar el código fuente (al final del artículo puedes descargar la clase de postear en Blogger con cUrl y PHP) y explicar su funcionamiento:
<?php
class blogger
{
private $FBlogID;
private $FUser;
private $FPass;
private $FAuth;
/**
* Construimos la clase. Pasamos como primer argumento el ID de nuestro Blog en Blogger.
*
* @param string $sBlogID
*
*/
public function __construct($sBlogID)
{
$this->FBlogID = $sBlogID;
}
public function setBlogID($sBlogID)
{
$this->FBlogID = $sBlogID;
}
public function setUser($sUser)
{
$this->FUser = $sUser;
}
public function setPass($sPass)
{
$this->FPass = $sPass;
}
public function setAuth($sAuth)
{
$this->FAuth = $sAuth;
}
public function getBlogID()
{
return $this->FBlogID;
}
public function getUser()
{
return $this->FUser;
}
public function getPass()
{
return $this->FPass;
}
public function getAuth()
{
return $this->FAuth;
}
/**
* Hacemos login con nuestra cuenta de Google
*
* @param string $sUser
* @param string $sPass
*
*/
public function login($sUser = false, $sPass = false)
{
// Variables
$cUrl = curl_init();
$aAuth = NULL;
// Asignamos variables
$this->FUser = $sUser;
$this->FPass = $sPass;
// Preparamos conexion
curl_setopt( $cUrl, CURLOPT_URL, 'https://www.google.com/accounts/ClientLogin' );
curl_setopt( $cUrl, CURLOPT_HEADER, false );
curl_setopt( $cUrl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $cUrl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $cUrl, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $cUrl, CURLOPT_POST, true );
curl_setopt( $cUrl, CURLOPT_POSTFIELDS, array( 'accountType' => 'GOOGLE', 'Email' => $this->FUser, 'Passwd' => $this->FPass, 'source' => 'blogger.class', 'service' => 'blogger' ) );
// Conectamos y obtenemos el resultado
$aAuth = curl_exec( $cUrl );
// Cerrar cURL
curl_close( $cUrl );
// Obtenemos el codigo de autenticacion
preg_match( '/Auth\=(?<auth>.+)$/i', $aAuth, $aAuth );
if( key_exists( 'auth', $aAuth ) )
$this->FAuth = $aAuth['auth'];
// Si no ha sido posible lanzamos excepcion
else
throw new Exception( 'Error en login. ¿Usuario o contraseña incorrecto?' );
}
/**
* Posteamos una entrada
*
* @param string $sTitle
* @param string $sBody
* @param string $sTags
* @param string $sDate (dd/mm/yy)
* @param string $sTime (hh:mm)
* @param boolean $bComments
*
*/
public function post($sTitle, $sBody, $sTags, $sDate = false, $sTime = false, $bComments = true)
{
// Variables
$cUrl = NULL;
$dDoc = NULL;
$sHtml = NULL;
$aInputs = NULL;
$nInputs = NULL;
$sSecurityToken = false;
// Obtenemos el securityToken
$cUrl = curl_init();
curl_setopt( $cUrl, CURLOPT_URL, 'http://www.blogger.com/post-create.g?blogID=' . $this->FBlogID );
curl_setopt( $cUrl, CURLOPT_HEADER, false );
curl_setopt( $cUrl, CURLOPT_HTTPHEADER, array( 'Authorization: GoogleLogin auth=' . $this->FAuth ) );
curl_setopt( $cUrl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $cUrl, CURLOPT_RETURNTRANSFER, true );
// Conectamos y obtenemos el resultado
$sHtml = curl_exec( $cUrl );
// Cerrar cURL
curl_close( $cUrl );
// Obtenemos el securityToken
$dDoc = new DOMDocument();
$dDoc->loadHtml( $sHtml );
$aInputs = $dDoc->getElementsByTagName( 'input' );
$nInputs = $aInputs->length;
for( $nCont = 0; $nCont < $nInputs; ++$nCont )
{
if( $aInputs->item( $nCont )->getAttribute( 'name' ) == 'securityToken' )
{
$sSecurityToken = $aInputs->item( $nCont )->getAttribute( 'value' );
break;
}
}
// Lanzamos excepcion si no se ha podido obtener el securityToken
if( $sSecurityToken === false )
throw new Exception( 'No se ha podido obtener el securityToken. Reintenta el logueo.' );
// Posteamos
$cUrl = curl_init();
curl_setopt( $cUrl, CURLOPT_URL, 'http://www.blogger.com/post-create.do' );
curl_setopt( $cUrl, CURLOPT_HEADER, false );
curl_setopt( $cUrl, CURLOPT_HTTPHEADER, array( 'Authorization: GoogleLogin auth=' . $this->FAuth ) );
curl_setopt( $cUrl, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $cUrl, CURLOPT_RETURNTRANSFER, false );
curl_setopt( $cUrl, CURLOPT_POST, true );
curl_setopt( $cUrl, CURLOPT_POSTFIELDS, array(
'blogID' => $this->FBlogID,
'title' => $sTitle,
'postBody' => $sBody,
'postLabels' => $sTags,
'postDate' => ($sDate === false ? date( 'd/m/y' ) : $sDate),
'postTime' => ($sTime === false ? date( 'H:i' ) : $Time),
'commentsMode' => ($bComments === true ? 'ON' : 'OFF'),
'securityToken' => $sSecurityToken )
);
// Posteamos
curl_exec( $cUrl );
// Cerrar cURL
curl_close( $cUrl );
}
}
?>
<?php
require 'blogger.class.php';
// Nueva instancia de la clase pasando como argumento el ID del blog
$b = new blogger( 'ID' );
// Nos logueamos en nuestra cuenta de Google con nuestras credenciales
$b->login( 'usuario', 'contraseña' );
// Enviamos un post
$b->post( 'Posteando desde la clase blogger.class de Ruta Relativa', 'Hola, estoy escribiendo un interesante post desde la clase blogger.class de Ruta Relativa.', 'post, api, blogger, class, ruta relativa' );
// Liberamos
unset( $b );
?>
Como vemos en el código de ejemplo, primero debemos de incluir la clase Blogger.class. Luego deberemos de crear una instancia de la clase blogger pasándole como argumento el ID de tu blog de Blogger. Luego llamamos al método login con el que nos loguearemos en nuestra cuenta de Google pasando como argumentos nuestro usuario y contraseña. El siguiente paso sería enviar el post pasando como argumentos el título del post, el cuerpo del post, los tags (separados por comas), la fecha (una cadena con formato dd/mm/yy), la hora (con formato (hh:mm) y por útimo un booleano indicando si permitimos o no los comentarios en la entrada.
Esperamos que os sea de utilidad para vuestros proyectos y podáis sacarle rendimiento. Para cualquier duda o sugerencia no dudéis en dejar comentarios.
Descarga: Descargar Blogger.class: Clase para escribir un post en Blogger usando cUrl y PHP
Artículos relacionados
Contactable: Plugin para wordpress para feedback y contacto
Publicado por sergiocius el día 24/06/2010Guardado en Plugins
Twittear tus post en Blogger con Feedburner
Publicado por sergiocius el día 10/09/2010Guardado en Blogosfera,Tutoriales,Twitter
Cómo enviar información por POST con Javascript
Publicado por sergiocius el día 19/05/2011Guardado en Desarrollo,Javascript
Eliminar marco de Google Imágenes y no perder ninguna visita
Publicado por sergiocius el día 01/12/2010Guardado en Desarrollo,Web
Usar Google Translate con PHP y Python
Publicado por sergiocius el día 28/06/2010Guardado en Desarrollo
Sobre sergiocius
Soy un desarrollador en entornos web y escritorio, entusiasta y amante de mi trabajo del que cada día espero aprender algo nuevo. Tengo una titulación de Técnico Superior en Desarrollo de Aplicaciones Informáticas y actualmente curso el primer año de Carrera Universitaria con el poco tiempo que me deja el trabajo. Fundé rutarelativa porque quiero que mi esfuerzo y tiempo invertidos en aprender y poner en práctica algo le resulte útil y fácil a otro usuario, del mismo modo que yo aprendo y ahorro tiempo con la ayuda de los demás.
Pues estoy intentando, recibir el Post ID una vez publicado el post pero el curl_exec( $cUrl ) solo me debuelve el valor 1. Pero desde el navegador puedo ver la pagina siguiente.
Cuando digo paguina sigiente me refiero donde aparece el link a la entrada, y el Post ID para editar.
Esta clase no está preparada para recibir el Post ID, lo que recibes de curl es el estado de la petición, es decir 1 que se ha hecho correcto.
En cualquier momento puedes modificar a tu gusto la clase para añadirle las funcionalidades que quieras, y además puedes compartirlo con nosotros si quieres.
¡Un saludo!
hola amigo estoy intentando modificar el .php para poder postear automaticamente a blogguer, pero me surge una inquietud ,que valores tengo que modificar $sBlogID y los de usser es que apenas empiezo y pss donde lo puedo subir para ver si funciona
@john
Es muy fácil, mira, para saber el valor de BlogID puedes hacerlo de la siguiente forma:
1. Te diriges a la administración de tu blog en blogger.
2. Clica en NUEVA ENTRADA.
3. La dirección a la que te dirija contiene el ID de tu blog, con este formato: http://www.blogger.com/post-create.g?blogID=xxxxxxxxxxxxxx
4. El valor de blogID de la URL del ejemplo será tu BlogID.
Por otro lado, los valores de usuario y contraseña serán los valores con los que te autenticas en Blogger.
En cuanto a donde puedes subirlo para ver si funciona, puedes hacerlo en cualquier servidor que corra PHP. Puedes montarte un servidor local en tu propio equipo, te recomiendo el paquete XAMPP (http://www.apachefriends.org/es/xampp.html), que es fácil de instalar y usar.
Espero haber disipado todas las dudas. ¡Saludos!
Hola..
Es interesante esto, pero tengo un problema.
no indicas como hacerlo funcionar, si tengo que agregar un codigo en el theme de mi blog en verdad eso no entedi bien.
Gracias =)
Hola Beko, una pregunta antes de poder responderte: ¿sabes algo de desarrollo en PHP?. En el post, para alguien que sepa un mínimo sobre desarrollo web, puede hacer funcionar esto perfectamente.
Respóndeme y vemos como puedo ayudarte a hacerlo funcionar. ¡Saludos!
Claro se algo de PHP, y tengo un blog y tambien se algo de plataformas prefabricadas,
Solo q esta vez no entendi bien..
Esque en verdad no tengo muy en claro que hacer con esos dos archivos que descargue.
Una vez modificado La dirección a la que te dirija contiene el ID de tu blog, con este formato: http://www.blogger.com/post-create.g?blogID=xxxxxxxxxxxxxx
q más tengo q hacer.
He revisado el post al completo y creo que está bien explicado y detallado, pero mira, voy a hacer un rápido resumen:
1. Descargamos y descomprimimos los archivos blogger.class.php y ejemplo.php.
2. Los pegamos en un servidor que ejecute php.
3. Abrimos el archivo ejemplo.php y cambiamos el parámetro ID por el ID de nuestro blog en Blogger.
¿Cómo obtengo mi BlogID?:
3.1. Te diriges a la administración de tu blog en blogger.
3.2. Clica en NUEVA ENTRADA.
3.3. La dirección a la que te dirija contiene el ID de tu blog, con este formato: http://www.blogger.com/post-create.g?blogID=xxxxxxxxxxxxxx
3.4. El valor de blogID de la URL del ejemplo será tu BlogID.
4. Cambiamos también los parametros usuario y contraseña por nuestros respectivos usuario y contraseña de nuestra cuenta de blogger.
5. Ejecutamos el archivo php desde cualquier explorador, o desde linux o como queramos para que se postee lo contenido en esta línea de código:
$b->post( ‘Posteando desde la clase blogger.class de Ruta Relativa’, ‘Hola, estoy escribiendo un interesante post desde la clase blogger.class de Ruta Relativa.’, ‘post, api, blogger, class, ruta relativa’ );
Siendo respectivamente el primer parámetro el título del post, el segundo el contenido del post y el tercero los tags del post.
Eso es todo, espero que ahora si podáis hacerlo funcionar.
Entiendo ahora si..
Lo que hize fue, modifique el ID, USER Y PASS EN ejemplo.php y a blogger.class.php no lo toque nada..
Le di ejecutar miweb.com/ejemplo.php
me sale el cuadro de postear del blogger todo bien, pero hay un pequeño error ensima del header.
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : p in Entity, line: 138 in /home/miweb/public_html/carpeta/blogger.class.php on line 139
y no puedo ver las letras del capcha..
Gracias de antemano amigo.
para que se posten automaticamente
‘postDate’ => ”,
‘postTime’ => ”,
remplazar el postdate y el posttime y dejarlos asi de blogger.class.php
hola, hize lo que aparece, pero me da error:
“Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : img in Entity, line: 122 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID continue already defined in Entity, line: 281 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID service already defined in Entity, line: 283 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID naui already defined in Entity, line: 285 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID fpui already defined in Entity, line: 287 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID skipvpage already defined in Entity, line: 289 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID rm already defined in Entity, line: 291 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID dsh already defined in Entity, line: 293 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID hl already defined in Entity, line: 295 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID alwf already defined in Entity, line: 297 in blogger.class.php on line 139
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID alinsu already defined in Entity, line: 299 in blogger.class.php on line 139
Fatal error: Uncaught exception ‘Exception’ with message ‘No se ha podido obtener el securityToken. Reintenta el logueo.’ in blogger.class.php:155 Stack trace: #0 ejemplo.php(12): blogger->post(‘Posteando desde…’, ‘Hola, estoy esc…’, ‘post, api, blog…’) #1 {main} thrown in blogger.class.php on line 155″
Me gustaría saber donde puedo encontrar algo parecido, pero que se haga desde un formulario (titulo y contenido) y al enviarlo redirige al post creado.
desde ya muchas gracias por la respuesta.
@Julio
Gracias por el añadido ;).
@Manuel
Lo más seguro es que no has incluido el ID de tu blog, lee el post de nuevo o los comentarios para aprender que es el blogID y ponerlo correctamente.
En cuanto a lo de encontrar un formulario para hacerlo, creo que no tiene sentido porque la utilidad de esto es hacerlo de forma automática desde un script en PHP. Si quieres postear usando un formulario puedes entrar en la administración de tu blog en Blogger y hacerlo desde ahí.
¡Saludos!
@Sergiocius, puse la id del blog, el usuario y la contraseña. Pero creo que se debe a algun problema del servidor en cuanto a los requerimientos.
Queria hacer el formulario para que puedan escribir entradas los visitantes.
¡Saludos!
Pues es raro la verdad, dices que puede ser un problema del servidor en cuanto a requerimientos… ¿a que te refieres con eso?.
Está bien pensado eso del formulario para los visitantes, pero realmente es fácil de hacer, ya que símplemente debes de recoger lo que envian por POST y usar la clase blogger.class para enviarlo a tu cuenta de blogger.
Lamento los problemas.
@Sergiocius, ok gracias, nose lo que este mal, pero el formulario si me funciona, lo que no logro es que una vez enviado me redirija al post creado.
@Manuel
Eso es difícil creo, ya que desde blogger cuando posteas te lleva a la misma página donde estabas escribiendo el post, pero mostrando un mensaje, no te redirecciona al post.
Podrías hacer que, por curl, obtener el primer post de tu blog y redireccionar hacia él.
Hola que tal muy util la clase,
Pero quiero hacer algo algo diferente quiero desde php recuperar el contenido de un post . Pero no como obtener el id del post o el contenido. Lo quiero para la hora que den en compartir en facebook tengan una versión narrada del post desde el muro y asi la puedan escuchar. Ya tengo la clase para leer texto desde vozme.com pero tengo que pasarle el contenido tienes alguna idea?
muy buenbo
Hola que tal muy util la clase,
Pero quiero hacer algo algo diferente quiero desde php recuperar el contenido de un post . Pero no como obtener el id del post o el contenido. Lo quiero para la hora que den en compartir en facebook tengan una versión narrada del post desde el muro y asi la puedan escuchar. Ya tengo la clase para leer texto desde vozme.com pero tengo que pasarle el contenido tienes alguna idea?
hola, me gustaria saber qué debo agregar para que al finalizar todo el proceso y luego de haber posteado me salga un mensaje “Felicidades tu post ha sido agregado” y que me redireccione al inicio y otra url que yo elija, gracias.
Me funciono bien, agradecido por la gran ayuda!
En que hosting lo hiciste? por que en el mio me vota el siguiente error
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/a4561380/blogger.class.php on line 81
Estoy usando un hosting gratuito como 000Webhost.
Este hosting tiene curl y tiene safe_mode of
Deve ser del open_basedir
Por eso te pregunto amigo ojala me ayudes en que hosting lo has hecho
Escribir comentario en Escribir un post en Blogger usando cUrl y PHP