sábado, setembro 10, 2005

Primeiro contato com o Ruby (Importar OPML para os Feeds do Opera)

A maioria dos programas leitores de RSS têm uma maneira de exportar e importar todos os canais para um único arquivo .opml, o Opera e o Firefox não têm ainda essa capacidade, dei uma procurada no google e achei um script em Ruby de Balazs Fejes, que faz a mágica.

É claro que poderia fazer manualmente a importação dos feeds pro Opera, pois o arquivo OPML nada mais é do que um arquivo XML, e o arquivo do Opera que guarda a configuração nada mais é do que um arquivo de configuração do windows (.ini) que está normalmente no arquivo:

%userprofile%/Dados de aplicativos/Opera/Mail/incoming11.txt

Mas não seria tão elegante, mais prático e interessante do que usar um script para isso.

Esse é o script (script.rb):

require "rexml/document"
include REXML
doc = Document.new File.new( "caminho_pro_arquivo_opml" )
myCount = 0
outlines = XPath.match( doc, "opml/body/outline" )
puts "Opera Preferences version 2.0\n\n"
puts "[Feeds]\nNext Feed ID=" + outlines.size.to_s + "\n\n"
outlines.each do |element|
puts "[Feed "+ myCount.to_s + "]\n"
puts "Name=" + element.attributes["text"] + "\n"
puts "URL=" + element.attributes["xmlUrl"]+"\n"
puts "Update Frequency=1800\n"
puts "Subscribed=1\n\n"
myCount+=1
end


Troque o que está em vermelho pelo caminho do seu arquivo opml.

É só rodar o script ( tomando a atenção de trocar as barras invertidas do Windows no nome do caminho para barras diretas do Unix: ex: escrever d:/temp/a.opml ao invés de d:\temp\a.opml ) e redirecionar a saída para o arquivo incoming11.txt:

ruby script.rb > incoming11.txt

Foi o meu primeiro contato com a linguagem, e um bom primeiro encontro...

Primeiramente precisava de um interpretador Ruby para Windows, o que não foi difícil, outra rápida procurada e vapt-vupt: www.ruby-lang.org

A instalação já vem com bibliotecas padrão para você incluir nos seus scripts, entre eles a biblioteca para fazer o parsing de arquivos XML que esse script precisa.

A linguagem em uma primeira vista me pareceu simples e o melhor sintaxe simples sem os rebuscamentos do Perl, por exemplo. E além disso, parece ser mais veloz que o perl.

Depois de uma pesquisada pude ver que é:
  • completamente orientada a objetos.
  • tem a habilidade de adicionar métodos a uma classe ou até mesmo à uma instância em tempo de execução
  • pode carregar bibliotecas dinamicamente
Muito interessante para uma linguagem de script. Vale a pena dar mais uma explorada nessa linguagem...

Nenhum comentário: