Importar endereços do Claws no Evolution (entre outros)
Publicado por Felipe Rafailov (última atualização em 24/11/2009)
[ Hits: 4.313 ]
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
Algoritmo de Fatoração de Fermat (FFA) em Ruby
Agenda telefônica em Ruby que grava os dados em um txt
Controle de maior e menor de idade em Ruby
Exportar endereços do Evolution para vCard
Uso simples de if e else em Ruby
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
O que você está ouvindo agora? [2] (175)
Copiar Layout do Teclado para aplicar em outra Distribuição (10)
Autenticação necessária. um aplicativo quer acesso ao chaveiro (2)