Publicidad
Últimas anotaciones reducidas
Amnistía Pirata: Juega a Machinarium por solo 5 dólares
Machinarium es uno de esos juegos sobresalientes que tanto nos gusta, y éste un buen movimiento para conseguir beneficios, pues han lanzado lo que ellos han llamado Amnistía Pirata. La Amnistía Pirata consiste en que los jugadores puedan jugar a Machinarium por solo 5 dólares (unos 3,90 €), ya que estiman que entre el 5% y el 15% de los que adquirieron el juego pagaron por él, y con este movimiento pretenden que aquellos jugadores que lo obtuvieron por diferentes vías (y los nuevos interesados) puedan comprarlo por un precio muy reducido.
Incluye además la banda sonora del juego, y podéis jugar a una entretenida demo en la página oficial del juego para que, los que no lo conozcáis, podáis hacerlo y entrar en el mundo de Machinarium. La oferta es válida hasta el 12 de Agosto.
Medley de música retro de videojuegos
Muchos somos los nostálgicos que crecimos con las melodías de los juegos de Super Mario Bros, Donkey Kong y demás personajes de videojuegos. Un usuario de Youtube llamado Adolfo Baez ha compuesto un Medley de música retro de videojuegos utilizando una aplicación llamada Mario Paint Composer.
El resultado es un simpático Medley que os hará recordar juegos como Pac-Man, The Legend of Zelda o Tetris.
Curiosidades de Los Simpsons: Hoy se casa Lisa Simpson
En el capítulo 6x19 de Los Simpsons podemos asistir, por medio de una visión a la, en aquel momento, futura vida de Los Simpsons. En dicho capítulo Lisa Simpson se casa, poniendo como fecha de boda el 1 de Agosto de 2010, es decir, hoy se casa Lisa Simpson.
Una simpática curiosidad de Los Simpsons que, los que disfrutamos tanto de la serie, sabremos apreciar.
Video de una proyección 3D en Amsterdam
Este video se corresponde con una proyección 3D que hicieron en plena calle de Amsterdam, donde vemos que los elementos del escenario van sufriendo transformaciones dando como resultado un impresionante video con efecto 3D.
Cuando te das cuenta que el edificio no está realmente ahí es cuando realmente impresiona.
Curiosidades y Easter Eggs de Toy Story 3 [Video]
Tras ver Toy Story 3 y salir de la sala bastante encantado con la película me dispuse a buscar curiosidades y Easter Eggs de Toy Story 3 y he dado con este video de Youtube, que os dejo en el enlace final, que contiene algunos interesantes, y otros bastante exagerados.
Entre dobladores curiosos, mensajes ocultos por los escenarios o cameos de otras de sus películas, el video nos va presentando lo que no pudimos ver mientras disfrutábamos de la última obra de Disney Pixar.
Últimos comentarios
Fans en Facebook de Ruta Relativa
Lo más comentado
Lo más visto
Post al azar
Video Stop Motion sobre la NES realizado con papel
Publicado por KeLDroX el día 03/06/2010Guardado en Videojuegos, Videos
¿Que regalar en Reyes?: Joyería Retro
Publicado por sergiocius el día 29/12/2009Guardado en Geek
Mod de los Cazafantasmas para la Wii
Publicado por sergiocius el día 02/03/2010Guardado en Videojuegos
WhatFontIs: Reconocedor de fuentes de escritura
Publicado por sergiocius el día 05/07/2010Guardado en Web
Pelicula de Mega Man
Publicado por sergiocius el día 08/02/2010Guardado en Cine, Videojuegos
Editores de Ruta Relativa
Categorías
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
Usar Google Translate con PHP y Python
Publicado por sergiocius el día 28/06/2010Guardado en Desarrollo
Jugar de nuevo a Google Pac-Man
Publicado por KeLDroX el día 26/05/2010Guardado en Google, Javascript, Videojuegos
¿Cómo puedo hacer ping XML-RPC con PHP?
Publicado por KeLDroX el día 06/05/2010Guardado en Desarrollo, Php
Clase para la API de Twitter
Publicado por sergiocius el día 21/11/2009Guardado en Desarrollo, Twitter
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.
Escribir comentario en Escribir un post en Blogger usando cUrl y PHP