
Este blog é escrito por diversos autores que trabalham na mesma empresa. No momento da criação do blog surgiu a dúvida: “Ele será um planet e agregará os posts dos blogs de cada pessoa, ou todos nós postaremos no mesmo blog?”. A segunda opção foi a escolhida. Entretanto alguns de nós já possuiam blogs pessoais e queriam mantê-los assim, apenas importando alguns posts no Linil.
Como o blog é hospedado diretamente no wordpress não há a opção de instalar plugins e portanto não temos como usar um plugin de planet já feito. Diante dessa dificuldade surgiu a idéia de se criar uma ferramenta que fizesse o mecanismo de planet automaticamente, não exigindo o processo de exportar e importar posts manualmente.
O wordpress é uma excelente ferramenta e possui um servidor de xmlrpc que permite ao desenvolvedor acesso a uma API para manipulação remota do blog. Para ser mais exato o wordpress implementa um conjunto de APIs voltadas para a edição de blogs, são elas: WordPress API, Blogger API, MetaWeblog API e MovableType API. Essas APIs possuem vários métodos, alguns repetidos, mas se complementam de uma boa forma e tornam o wordpress melhor ainda. A MetaWeblog API possui métodos que também existem na Blogger API, no entanto, oferece dados mais detalhados. Um exemplo disso é que quando se puxa um post, através do método getPost de ambas, grande parte dos dados na Blogger API são retornados num único campo da resposta enquanto que no MetaWeblog API esses dados são enviados bem divididos em título, contéudo, autor e etc.
De posse de uma API de alto nível o trabalho ficou fácil e o algoritmo se resume basicamente a puxar os posts dos blogs e criar um novo no linil. Para tal vou mostrar de uma forma simples como é feito o acesso a API do wordpress. A linguagem de programação utilizada aqui é Python. O exemplo abaixo é apenas para ilustrar a facilidade de utilização da API e não tem por objetivo abranger toda a API suportada pelo wordpress. Uma excelente referência para os métodos das APIs suportadas pelo wordpress pode ser encontrado no endereço do sixapart.
Antes de começar é necessário importar o módulo do python que permite o uso do xmlrpc, e conectar-se ao servidor:
import xmlrpclib server = xmlrpclib.ServerProxy( "http://seublog.wordpress.com/xmlrpc.php" )
Para ter acesso a algum post do blog é necessário apenas chamar o método getPost da seguinte forma:
post = server.metaWeblog.getPost(iddopost , "seulogin", "suasenha" )
Pode-se perceber que foi usado o método getPost da MetaWeblog API. O primeiro parâmetro é o número do id do post, os demais são o login e senha exigidos para o acesso ao blog. Existem inúmeros métodos que permitem a total manipulação do blog, recomendo fortemente o estudo das APIs suportadas através do link acima do site sixapart, foi o melhor material que eu encontrei até o momento sobre o assunto. Durante o estudo dessa interface do wordpress decidi baixar o código do mesmo e ver de fato quais são as funções implementadas e como elas são implementadas, se você tiver tempo também recomendo a leitura, o código se encontra no arquivo xmlrpc.php.
O software que precisamos poderia ser facilmente implementado pegando posts de um blog através do getPost e inserindo em outro pelo método newPost. Entretanto, os blogs possuem mecanismos de feeds que são muito mais úteis para a extração do conteúdo dos posts e python contém uma boa biblioteca para leitura de feeds. A biblioteca feedparser é bastante simples mas também poderosa.
Segue um pequeno exemplo de como pegar os posts de um rss:
import feedparser
feed = feedparser.parse("http://linil.wordpress.com/feed/" )
O objeto feed possui diversos atributos, dentro eles o que nos interessa é o atributo entries, o qual é uma lista que possue todos os posts do feed. Nele os posts são dicionários python que contém todos os atributos de um post. Por exemplo, o título do primeiro post do blog pode ser lido em feed.entries[0].title.
Uma vez que todas as ferramentas necessárias já foram estudadas, é possível construir nosso próprio planet e de forma bastante simples. Basicamente o que resta fazer é monitorar o feed por atualizações e inserir-las no blog. Espero que o post tenha ajudado as pessoas que estão tentando implementar algo parecido e que também possa mostrar o quanto é simples escrever em python pequenas aplicações que se tornam necessárias no dia-a-dia.
Olá, muito legal.
Semana passada criei um blog no wordpress
http://codigobr.wordpress.com/
Gostaria de saber como vocês fizeram para usar esta formatação nos Códigos?
Pra separar eles nessas caixinhas bonitinhas ai?
Agradeço se me ajudarem
Bom dia, gostei da iniciativa, vou estar testando isso….
abraços
Gustavo Henrique