Importar otro blog a La Coctelera
No lo sabe casi nadie porque no lo hemos anunciado a-bombo-y-platillo. No lo hemos anunciado a-bombo-y-platillo porque no está Oficialmente Soportado (tm). No está Oficialmente Soportado (tm) porque no lo hemos terminado de probar, no está implementado por entero (sólo las partes más básicas) y puede fallar. Pero La Coctelera soporta MetaWeblogApi. ¿Y qué es eso? Lo explicó muy bien adastra, que el jodío lo cascó en cuanto se enteró ![]()
La idea es que, al igual que los feeds hacen que visitar un blog sólo sea una de las posibles formas de leer su contenido (pudiéndose además leer a través de otras aplicaciones como Bloglines, Google Reader o Liferea, o recibirlo por correo), las APIs como MetaWeblog permiten que no sólo se pueda publicar en un blog desde el interfaz administrativo del propio blog, sino también a través de programas como w.bloggar, Gnome Blog, u otros servicios web como Flickr.
O también el mini-script que hice ayer para importar otro blog a La Coctelera.
El script lee de un feed y publica su contenido, a través de MetaWeblog, en tu blog de La Coctelera, con la fecha original. Recalco esto porque eso sólo es posible gracias a un parche que ha entrado hoy mismo en La Coctelera (gracias a mí, que lo he escrito, y a Manuel que ha tenido los santos huevos de subirlo hoy Domingo a producción; gracias salao).
Ventajas de leer un feed:
- No dependemos de ninguna característica de ningún sistema de blogs: todos los blogs que se precien de llamarse así tienen feeds.
- No hace falta autenticarse contra el blog de origen, lo cual simplifica el proceso (el lector avispado se percatará de que eso también significa que podemos importar blogs ajenos: no me sean malitos que nos conocemos)
Desventajas:
- No vamos a poder importar los comentarios. Esto es una desventaja relativa, porque en realidad, no hay ningún sistema que nos permita importar los comentarios de forma automática. Tampoco vamos a poder importar tags, categorías, ni nada que no sean los posts, su título y su fecha.
- Los feeds de los distintos sistemas de blogs son variados, y a veces tienen limitaciones. Algunos (los menos ya) no publican entradas enteras, sino los primeros párrafos. Otros (esto es más frecuente) limitan el número de entradas que aparecen en el feed, lo que nos puede obligar a sencillas pero engorrosas operaciones manuales. Yo, por ejemplo, para importar de Blogger, que saca un máximo de 30 entradas en el feed, he tenido que hacerlo en dos fases: primero lanzar la importación, que ha creado los 30 artículos que aparecían en el feed, pasar esos 30 artículos a borrador (para que no aparecieran en el feed) y volverla a lanzar.
Yo lo he hecho en Ruby aunque se podría hacer en casi cualquier lenguaje. Usa la librería de cliente de XML-RPC (que viene incluída con Ruby), y Feedtools (que se debe instalar aparte como gema).
Para los que hayan llegado hasta aquí, el premio: el código, que, como véis, es bastante más corto que este post (¡Ruby mola!)
require 'xmlrpc/client'
require 'rubygems'
require_gem 'feedtools'
metaweblog_host = "www.lacoctelera.com"
metaweblog_path = "/api/xmlrpc"
feed_url = "url-del-feed-del-blog-a-importar"
user = "tu-usuario-en-la-coctelera"
password = "tu-contraseña-en-lacoctelera"
feed = FeedTools::Feed.open(feed_url)
server = XMLRPC::Client.new(metaweblog_host, metaweblog_path)
feed.items.each do |item|
post = {
:title => item.title,
:description => item.description,
:date => item.published
}
result = server.call("metaWeblog.newPost", 1, user, password, post, true)
puts "Importado artículo '#{post[:title]}' con ID #{result}"
end
Nota importante: esto Puede Fallar (tm). El soporte de metaWeblog por parte de La Coctelera no es oficial aunque en teoría para lo que se hace en ese script sí llega (y a mí me ha funcionado). Úsalo bajo tu responsabilidad, aunque si te puedo echar un cable, pregunta. Por otra parte, es seguro, y lo peor que puede pasar es que tengas que borrar algún post feo de tu blog.






Fernando Blat Peris dijo
Joe, que currado Sergio. Gran post.
26 Febrero 2007 | 07:21 AM