#!/usr/bin/perl -w
#by Torben Menke
#http://www.entorb.net
# Script for exporting a kde-adressbook to Opera
# Only name + eMail are exported
use warnings;
use strict;
use Data::Dumper;
my @vcffiles = (
"/home/torben/.kde/share/apps/kabc/privat.vcf"
,"/home/torben/.kde/share/apps/kabc/iapp.vcf"
);
my $outfile = "./std.adr";
my $counterNames = 0;
my $counterMails = 0;
$_ = pack ('H*',2);
print pack ('H*',2);
print "\n";
#die;
my $header =
"Opera Hotlist version 2.0
Options: encoding = utf8, version=3
#FOLDER
NAME=Imported Contacts
\n";
my $operaList = $header;
my $mailTrenner = "\x02\x02";
foreach my $vcffile (@vcffiles) {
open VCF, "< $vcffile" or die $!;
my @vcfcards = split "END:VCARD", (join "",<VCF>);
close VCF;
# print Dumper @vcfcards and die();
foreach my $card (@vcfcards) {
next if (not $card =~ m/^N:([^;]*);([^;]*);/m);
$counterNames++;
my $name = $2.' '.$1;
my @eMails;
while ($card =~ m/^EMAIL[^:]*:\s*([^\s]*)/gcm) {
push @eMails,$1;
$counterMails++;
}
if (@eMails){
$operaList .= "#CONTACT\n\tNAME=$name\n\t";
$operaList .= "MAIL=".(join $mailTrenner,@eMails)."\n\t";
$operaList .= "ICON=Contact0\n\n";
}
}
} # end foreach vcf file
open OUT, "> $outfile" or die $!;
print OUT $operaList;
close OUT;
print "$counterNames Names with $counterMails eMails exported to file $outfile\n";
Hope you found what you where looking for. Feel free to drop me a line
Torben