Posts Tagged 'feed'

Hand

Ontem, enquanto gravava um DVD, comecei a generalizar os scripts que geram os feeds do post anterior. E disso surgiu o Hand, um gerador de feeds RSS.

Como funciona?

O meu objetivo inicial era gerar feeds para sites que não os disponibilizavam, recorrendo ao bom e velho screen scraping. Comecei fazendo o feed dos quadrinhos da Folha, o mais complicado, pois era necessário fazer autenticação de usuário e percorrer várias páginas para extrair links. Ao fazer o dos Malvados, segui a mesma estrutura de funções, e comecei a perceber que dava para generalizar bastante o processo.

Eis que surge Hand. No fundo é uma classe que implementa alguns métodos (build_date, generate_description, build_feed, process), e exige que você derive a classe e implemente o método generate_data. generate_data é um método que retorna uma lista de dicionários, com cada dicionário contendo os campos title, page_link, description, pubDate e guid correspondentes a um item do feed. Simples assim.

E funciona?

Yep. Mantenho quatro feeds no momento:

Onde posso ver esta maravilha?

O código está disponível no Github, mas ainda está bem cru, preciso empacotá-lo direito.

Quais os próximos passos?

O feed da Folha demora para ser gerado, porque toda vez que o script é rodado ele precisa consultar todas as páginas. Portanto penso em adicionar persistência, mas bem simples, um sqlite é mais que suficiente.

Além disso, quero descrever a configuração do feed (onde gerá-lo, qual template usar) num arquivo, e fazer a classe base ler essas opções. Assim fica ainda mais fácil fazer um novo feed.

Que nominho, hein?

Para quem não entendeu o nome: qual um bom para um gerador de feeds? Enquanto pensava, lembrei de uma música do NIN chamada ‘The Hand That Feeds’. E, além disso, ele também te dá uma mão para gerar feeds, certo? *TU-DUM-TISH*!

Feeds de quadrinhos

Infelizmente a Folha de São Paulo não disponibiliza feeds dos quadrinhos diários dela. Isso significa privar-nos de Laerte e Adão, mas não temam! Caso queiram tirinhas frescas toda a manhã no seu leitor de feeds favorito, basta usar o que eu fiz.

A idéia (sim, sou antigo, meus netos ainda vão dizer ‘meu vô é do tempo que se escrevia ideia com acento’) é simples, e foi baseada na do Leandro Siqueira: apesar do conteúdo da Folha ser exclusivo para assinantes, as imagens das tirinhas são acessíveis. Basta descobrir o padrão do nome delas. Mas percebi que as tirinhas de domingo não estavam aparecendo, pois existem autores diferentes nesse dia (Allan Sieber e irmãos Bá, atualmente). Então resolvi fazer um que fosse um pouquinho mais dinâmico, e deu certo, porque quando houve a transição das dominicais o feed continuou funcionando sem modificações.

Como foi feito? Python, Beautiful Soup e Mechanize. O script autentica no site, busca o índice dos quadrinhos, e acha o link das imagens para gerar o feed. Aliás, Beautiful Soup é uma das bibliotecas mais úteis que já usei, para mexer com HTML não tem nada melhor.

E, como o mais complicado já estava feito, semana passada fiz rapidinho um feed para os Malvados também. Até tem um feed lá, mas é só para o blog. Ainda não resolvi como fazer para mostrar as séries, mas as normais aparecem sem problemas no feed (acho, eu uso Google Reader e aparece. Por favor, testem em outros readers e me avisem).

Ando pensando em generalizar um pouco os dois scripts, para facilitar a escrita de screen scrapers, mas não sei se vale a pena, já que eles são extremamente dependentes da estrutura da página. Mas vamos ver o que sai =D