Importar endereços do Claws no Evolution (entre outros)
Publicado por Felipe Rafailov (última atualização em 24/11/2009)
[ Hits: 4.201 ]
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
Exportar endereços do Evolution para vCard
Algoritmo de Fatoração de Fermat (FFA) em Ruby
Controle de maior e menor de idade em Ruby
Uso simples de if e else em Ruby
Agora temos uma assistente virtual no fórum!!! (246)
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
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como eu faço para ativar o sistema de gestos do mousepad? (4)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (13)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta