Importar endereços do Claws no Evolution (entre outros)
Publicado por Felipe Rafailov (última atualização em 24/11/2009)
[ Hits: 4.237 ]
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
Controle de maior e menor de idade em Ruby
Agenda telefônica em Ruby que grava os dados em um txt
Exportar endereços do Evolution para vCard
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (6)