Importar endereços do Claws no Evolution (entre outros)
Publicado por Felipe Rafailov (última atualização em 24/11/2009)
[ Hits: 4.364 ]
Este script em Ruby lê o arquivo XML de endereços do Claws-Mail e os escreve em formato vCard, que pode ser facilmente importado pelo Evolution ou outro programa de e-mail que aceite este formato.
Serve também de estudo para manipulação de arquivos XML e vCard com Ruby.
Requer o "gem" vpim, que pode ser encontrado em: http://vpim.rubyforge.org/ (ou pelo comando "gem install vpim").
#!/usr/bin/ruby require 'rubygems' require 'rexml/document' # O 'gem' vpim pode ser encontrado em http://vpim.rubyforge.org/ # ou instalado através do comando 'gem install vpim' (como root). require 'vpim/vcard' include REXML file = File.new(ARGV.first) doc = Document.new(file) root = doc.root root.each_element('//person') do |person| card = Vpim::Vcard::Maker.make2 do |maker| maker.add_name do |name| if person.attributes['first-name'].empty? name.given = person.attributes['cn'].split.first else name.given = person.attributes['first-name'] end if person.attributes['last-name'].empty? name.family = person.attributes['cn'].split.last else name.family = person.attributes['last-name'] end name.fullname = person.attributes['cn'] end maker.nickname = person.attributes['nick-name'] person.children[1].each_element do |emailaddr| maker.add_email(emailaddr.attributes['email']) end person.children[3].each_element do |property| case property.attributes['name'] when /^endereço( do trabalho)?$/ then maker.add_addr do |addr| addr.location = $1 ? 'work' : 'home' addr.preferred = true unless $1 addr.street = property.text end when "data de nascimento" then maker.birthday = Time.parse(property.text) when "fax" then maker.add_tel(property.text) do |t| t.location = 'work' t.capability = 'fax' end when "organização" then # TODO: achar uma maneira de colocar o nome da empresa no Vcard when "sítio na Internet" # TODO: achar uma maneira de colocar o endereço de Internat da empresa no Vcard when /^telefone( celular| do trabalho)?/ maker.add_tel(property.text) do |tel| if $1 == " celular" tel.location = 'mobile' elsif $1 == " do trabalho" tel.location = 'work' else tel.location = 'home' end end end end end puts card end
Agenda telefônica em Ruby que grava os dados em um txt
Algoritmo de Fatoração de Fermat (FFA) em Ruby
Exportar endereços do Evolution para vCard
Uso simples de if e else em Ruby
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
O que você quer para sua vida ao usar o Linux?
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Encontrar o comando completo de uma janela [RESOLVIDO] (2)
Instalação de Ubuntu em SSD (interno) como se fosse um dispositivo ext... (2)
Zorin OS - Virtual Box não consigo abrir maquinas virtuais (10)