3 # * Copyright © 2002 Paul Mangan <claws@thewildbeast.co.uk>
5 # * This file is free software; you can redistribute it and/or modify it
6 # * under the terms of the GNU General Public License as published by
7 # * the Free Software Foundation; either version 2 of the License, or
8 # * (at your option) any later version.
10 # * This program is distributed in the hope that it will be useful, but
11 # * WITHOUT ANY WARRANTY; without even the implied warranty of
12 # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # * General Public License for more details.
15 # * You should have received a copy of the GNU General Public License
16 # * along with this program; if not, write to the Free Software
17 # * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 ## script name : kmail2sylpheed.pl
21 ## script purpose : convert a Kmail addressbook into a Sylpheed addressbook
27 GetOptions("kmailfile=s" => \$kmailfile);
31 $sylph_addr = "<?xml version=\"1.0\" encoding=\"US-ASCII\" ?>\n";
32 $sylph_addr .= "<address-book name=\"Kmail Address Book\" >\n";
35 #chdir '.sylpheed' || die("You don't appear to have Sylpheed installed\n");
37 opendir(SYLPHEED, ".sylpheed") || die("Can't open .sylpheed directory\n");
38 push(@cached,(readdir(SYLPHEED)));
41 foreach $cached (@cached) {
42 if ($cached =~ m/^addrbook/ && $cached =~ m/[0-9].xml$/) {
43 push(@addr, "$cached");
47 @sorted = sort {$a cmp $b} @addr;
48 $last_one = pop(@sorted);
49 $last_one =~ s/^addrbook-//;
50 $last_one =~ s/.xml$//;
52 $new_addrbk = "addrbook-"."$last_one".".xml";
54 open (KFILE, "<$kmailfile") || die("Can't find the kmail file\n");
55 @kmaillines = <KFILE>;
58 $dross = shift(@kmaillines);
60 foreach $kmailline (@kmaillines) {
61 (@kmaildata) = split(/,/,$kmailline);
62 foreach $kmaildata (@kmaildata) {
65 $kmaildata =~ s/"/"/g;
66 $kmaildata =~ s/&/&/g;
67 $kmaildata =~ s/'/'/g;
68 $kmaildata =~ s/</</g;
69 $kmaildata =~ s/>/>/g;
71 $sylph_addr .= " <person uid=\"$time\" first-name=\"$kmaildata[0]\""
72 ." last-name=\"$kmaildata[1]\" nick-name=\"$kmaildata[7]\""
73 ." cn=\"$kmaildata[0] $kmaildata[1]\" >\n"
76 $sylph_addr .= " <address uid=\"$time\" alias=\"\" email=\"$kmaildata[6]\""
77 ." remarks=\"$kmaildata[8]\" />\n"
78 ." </address-list>\n";
79 if ($kmaildata[13] ne "" || $kmaildata[9] ne "" || $kmaildata[21] ne "" ||
80 $kmaildata[16] ne "" || $kmaildata[5] ne "" || $kmaildata[24] ne "" ||
81 $kmaildata[19] ne "" || $kmaildata[12] ne "" || $kmaildata[10] ne "" ||
82 $kmaildata[4] ne "" || $kmaildata[2] ne "" || $kmaildata[11] ne "" ||
83 $kmaildata[3] ne "" || $kmaildata[14] ne "" || $kmaildata[22] ne "" ||
84 $kmaildata[17] ne "" || $kmaildata[20] ne "" || $kmaildata[15] ne "" ||
85 $kmaildata[23] ne "" || $kmaildata[18] ne "") {
86 $sylph_addr .= " <attribute-list>\n";
88 if ($kmaildata[3] ne "" || $kmaildata[2] ne "") {
90 $sylph_addr .= " <attribute uid=\"$time\" name=\"Full Name\" >"
91 ."$kmaildata[3] $kmaildata[0] $kmaildata[2] $kmaildata[1]</attribute>\n";
93 if ($kmaildata[15] ne "") {
95 $sylph_addr .= " <attribute uid=\"$time\" name=\"Home Street Address\" >"
96 ."$kmaildata[15]</attribute>\n";
98 if ($kmaildata[16] ne "") {
100 $sylph_addr .= " <attribute uid=\"$time\" name=\"Home City Address\" >"
101 ."$kmaildata[16]</attribute>\n";
103 if ($kmaildata[17] ne "") {
105 $sylph_addr .= " <attribute uid=\"$time\" name=\"Home State Address\" >"
106 ."$kmaildata[17]</attribute>\n";
108 if ($kmaildata[18] ne "") {
110 $sylph_addr .= " <attribute uid=\"$time\" name=\"Home Zip Address\" >"
111 ."$kmaildata[18]</attribute>\n";
113 if ($kmaildata[19] ne "") {
115 $sylph_addr .= " <attribute uid=\"$time\" name=\"Home Country Address\" >"
116 ."$kmaildata[19]</attribute>\n";
118 if ($kmaildata[10] ne "") {
120 $sylph_addr .= " <attribute uid=\"$time\" name=\"Home Phone\" >"
121 ."$kmaildata[10]</attribute>\n";
123 if ($kmaildata[12] ne "") {
125 $sylph_addr .= " <attribute uid=\"$time\" name=\"Home Fax\" >"
126 ."$kmaildata[12]</attribute>\n";
128 if ($kmaildata[11] ne "") {
130 $sylph_addr .= " <attribute uid=\"$time\" name=\"Mobile Phone\" >"
131 ."$kmaildata[11]</attribute>\n";
133 if ($kmaildata[14] ne "") {
135 $sylph_addr .= " <attribute uid=\"$time\" name=\"Pager\" >"
136 ."$kmaildata[14]</attribute>\n";
138 if ($kmaildata[5] ne "") {
140 $sylph_addr .= " <attribute uid=\"$time\" name=\"Company\" >"
141 ."$kmaildata[5]</attribute>\n";
143 if ($kmaildata[4] ne "") {
145 $sylph_addr .= " <attribute uid=\"$time\" name=\"Job Title\" >"
146 ."$kmaildata[4]</attribute>\n";
148 if ($kmaildata[20] ne "") {
150 $sylph_addr .= " <attribute uid=\"$time\" name=\"Business Street Address\" >"
151 ."$kmaildata[20]</attribute>\n";
153 if ($kmaildata[21] ne "") {
155 $sylph_addr .= " <attribute uid=\"$time\" name=\"Business City Address\" >"
156 ."$kmaildata[21]</attribute>\n";
158 if ($kmaildata[22] ne "") {
160 $sylph_addr .= " <attribute uid=\"$time\" name=\"Business State Address\" >"
161 ."$kmaildata[22]</attribute>\n";
163 if ($kmaildata[23] ne "") {
165 $sylph_addr .= " <attribute uid=\"$time\" name=\"Business Zip Address\" >"
166 ."$kmaildata[23]</attribute>\n";
168 if ($kmaildata[24] ne "") {
170 $sylph_addr .= " <attribute uid=\"$time\" name=\"Business Country Address\" >"
171 ."$kmaildata[24]</attribute>\n";
173 if ($kmaildata[9] ne "") {
175 $sylph_addr .= " <attribute uid=\"$time\" name=\"Business Phone\" >"
176 ."$kmaildata[9]</attribute>\n";
178 if ($kmaildata[13] ne "") {
180 $sylph_addr .= " <attribute uid=\"$time\" name=\"Business Fax\" >"
181 ."$kmaildata[13]</attribute>\n";
183 $sylph_addr .= " </attribute-list>\n";
185 $sylph_addr .= " </person>\n";
188 $sylph_addr .= "</address-book>\n";
190 open (NEWADDR, ">.sylpheed/$new_addrbk");
191 print NEWADDR $sylph_addr;
194 open (ADDRIN, "<.sylpheed/addrbook--index.xml") || die("can't open addrbook--index.xml");
195 @addrindex_file = <ADDRIN>;
198 foreach $addrindex_line (@addrindex_file) {
199 if ($addrindex_line =~ m/<\/book_list>/) {
200 $rewrite_addrin .= " <book name=\"Kmail Address Book\" file=\"$new_addrbk\" />\n"
203 $rewrite_addrin .= "$addrindex_line";
207 open (NEWADDRIN, ">.sylpheed/addrbook--index.xml");
208 print NEWADDRIN "$rewrite_addrin";
211 print "\nYou have sucessfully converted your Kmail addressbook\n";