fixes and improvements to tb2sylpheed
This commit is contained in:
parent
7626a602c0
commit
d6b3b54223
|
@ -1,3 +1,8 @@
|
|||
2003-01-02 [paul]
|
||||
|
||||
* tools/tb2sylpheed
|
||||
fixes and improvements by Urke MMI
|
||||
|
||||
2003-01-02 [thorsten] 0.8.8claws40
|
||||
|
||||
* src/procmsg.c
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# Script name : tb2sylpheed.pl
|
||||
# Script name : tb2sylpheed
|
||||
# Script version: 1.0.1
|
||||
# Script based on : script kmail2sylpheed.pl
|
||||
# Script purpose : convert The Bat! addressbook into a Sylpheed addressbook
|
||||
# Script purpose : convert The Bat! addressbook into Sylpheed addressbook
|
||||
# Author : Aleksandar Urosevic aka Urke MMI <urke@gmx.net>
|
||||
# Licence : GPL
|
||||
#
|
||||
|
@ -11,38 +12,48 @@
|
|||
# Usage: Export The Bat! Address Book to CSV file format
|
||||
# with all fields selected to YES and then start:
|
||||
# tb2sylpheed --tbfile=/full/path/to/thebat/addressbook.csv
|
||||
#
|
||||
# Change Log:
|
||||
#
|
||||
# 01-01-2003 v 1.0.1
|
||||
# - bugfix: no more empty Business Homepage entry
|
||||
# - bugfix: no more \0D\0A´s in Notes entry
|
||||
# - bugfix: no more double space in Full Name entry
|
||||
# - code utilization
|
||||
# - add info about number of converted addresses
|
||||
#
|
||||
# 15-08-2002 v 1.0.0
|
||||
# - first public release
|
||||
#
|
||||
# TODO:
|
||||
#
|
||||
# * Add switch for Full Name entry on atrybute part
|
||||
#
|
||||
|
||||
use Getopt::Long;
|
||||
|
||||
$tbfile = '';
|
||||
|
||||
GetOptions("tbfile=s" => \$tbfile);
|
||||
|
||||
$time = time;
|
||||
|
||||
# $tbfile = 'thebat-addressbook.csv';
|
||||
|
||||
$sylph_addr = "<?xml version=\"1.0\" encoding=\"ISO-8859-2\" ?>\n";
|
||||
$sylph_addr .= "<address-book name=\"The Bat! Address Book\" >\n";
|
||||
|
||||
# $new_addrbk = "addrbook-000013.xml";
|
||||
#$tbfile = '/home/urke/bin/sylpheed/tb2ldif/thebat-addressbook.csv';
|
||||
$total_addresses = 0;
|
||||
|
||||
chdir;
|
||||
|
||||
# check is Sylpheed instrtalled
|
||||
|
||||
opendir(SYLPHEED, ".sylpheed") || die("Can't oen sylpheed directory\n");
|
||||
opendir(SYLPHEED, ".sylpheed") || die("Can't open Sylpheed directory! Conversion abroted\n");
|
||||
push(@cached, (readdir(SYLPHEED)));
|
||||
closedir(SYLPHEED);
|
||||
|
||||
# get last existing addressbook filename to set filename for newest addressbook
|
||||
# get last existing addressbook filename
|
||||
# to set filename for newest addressbook
|
||||
|
||||
# get all existing addressbook filenames
|
||||
foreach $cached (@cached) {
|
||||
if ($cached =~ m/^addrbook/ && $cached =~ m/[0-9].xml$/) {
|
||||
push(addr, "$cached");
|
||||
}
|
||||
}
|
||||
|
||||
# sort filenames, get last and set newest filename
|
||||
@sorted = sort {$a cmp $b} @addr;
|
||||
$last_one = pop(@sorted);
|
||||
$last_one =~ s/^addrbook-//;
|
||||
|
@ -50,19 +61,25 @@ $last_one =~ s/.xml$//;
|
|||
$last_one++;
|
||||
$new_addrbk = "addrbook-"."$last_one".".xml";
|
||||
|
||||
# opening thebat file in to stack
|
||||
|
||||
open (TBFILE, "<$tbfile") || die("Can't find the thebat file\n");
|
||||
# open thebat file to stack
|
||||
open (TBFILE, "<$tbfile") || die("Specified Address Book file does not exist.\n\033[5m\033[31mYou must specify full path to input file!\033[0m\nConversion aborted.\n");
|
||||
@tblines = <TBFILE>;
|
||||
close TBFILE;
|
||||
|
||||
# shift firs line from file because this is field names
|
||||
$dross = shift(@tblines);
|
||||
|
||||
# create addressbook entry from The Bat! addressbook
|
||||
# set time mark and header of addressbook
|
||||
$time = time;
|
||||
$sylph_addr = "<?xml version=\"1.0\" encoding=\"ISO-8859-2\" ?>\n";
|
||||
$sylph_addr .= "<address-book name=\"The Bat! Address Book\" >\n";
|
||||
|
||||
# create addressbook entry from The Bat! addressbook
|
||||
foreach $tbline (@tblines) {
|
||||
$total_addresses += 1;
|
||||
(@tbdata) = split(/,/,$tbline);
|
||||
foreach $tbdata (@tbdata) {
|
||||
# fix nonacceptable characters
|
||||
$tbdata =~ s/^"//;
|
||||
$tbdata =~ s/"$//;
|
||||
$tbdata =~ s/"/"/g;
|
||||
|
@ -70,29 +87,38 @@ foreach $tbline (@tblines) {
|
|||
$tbdata =~ s/'/'/g;
|
||||
$tbdata =~ s/</</g;
|
||||
$tbdata =~ s/>/>/g;
|
||||
$tbdata =~ s/\\2C\ /, /g;
|
||||
$tbdata =~ s/(\\0D\\0A){1,}/, /g;
|
||||
$tbdata =~ s/\ {2,}/ /g;
|
||||
}
|
||||
# set addressbook field values
|
||||
$sylph_addr .= " <person uid=\"$time\" first-name=\"$tbdata[1]\""
|
||||
." last-name=\"$tbdata[2]\" nick-name=\"$tbdata[5]\""
|
||||
." cn=\"$tbdata[0]\" >\n"
|
||||
." <address-list>\n";
|
||||
$time++;
|
||||
$sylph_addr .= " <address uid=\"$time\" alias=\"\" email=\"$tbdata[4]\""
|
||||
." remarks=\"$tbdata[5]\" />\n"
|
||||
$sylph_addr .= " <address uid=\"$time\" alias=\"$tbdata[5]\" email=\"$tbdata[4]\""
|
||||
." remarks=\"\" />\n"
|
||||
." </address-list>\n";
|
||||
if ($tbdata[6] ne "" || $tbdata[7] ne "" || $tbdata[8] ne "" ||
|
||||
$tbdata[9] ne "" || $tbdata[10] ne "" || $tbdata[11] ne "" ||
|
||||
$tbdata[12] ne "" || $tbdata[13] ne "" || $tbdata[14] ne "" ||
|
||||
$tbdata[15] ne "" || $tbdata[16] ne "" || $tbdata[17] ne "" ||
|
||||
$tbdata[18] ne "" || $tbdata[19] ne "" || $tbdata[20] ne "" ||
|
||||
$tbdata[21] ne "" || $tbdata[22] ne "" || $tbdata[23] ne "" ||
|
||||
$tbdata[24] ne "" || $tbdata[25] ne "" || $tbdata[26] ne "" ||
|
||||
$tbdata[27] ne "" || $tbdata[30] ne "" || $tbdata[31] ne "") {
|
||||
$sylph_addr .= " <attribute-list>\n";
|
||||
|
||||
# find is need to make entry attributes
|
||||
$check = 0;
|
||||
for($i=6; $i<=31; $i++) {
|
||||
$tbdata[$i] =~ s/^\s+//;
|
||||
$tbdata[$i] =~ s/\s+$//;
|
||||
if ($tbdata[$i] ne "") { $check += 1; }
|
||||
}
|
||||
|
||||
if ($check > 0) {
|
||||
if ($tbdata[1] ne "" || $tbdata[2] ne "") {
|
||||
$time++;
|
||||
if($tbdata[29] ne "" && $tbdata[1] ne "") { $full_name = "$tbdata[29] $tbdata[1]"; } else { $full_name = "$tbdata[1]"; }
|
||||
if($tbdata[3] ne "") { $full_name .= " $tbdata[3]"; }
|
||||
if($tbdata[2] ne "") { $full_name .= " $tbdata[2]"; }
|
||||
if($tbdata[28] ne "") { $full_name .= " $tbdata[28]"; }
|
||||
|
||||
$sylph_addr .= " <attribute uid=\"$time\" name=\"Full Name\" >"
|
||||
."$tbdata[29] $tbdata[1] $tbdata[3] $tbdata[2] $tbdata[28]</attribute>\n";
|
||||
."$full_name</attribute>\n";
|
||||
}
|
||||
if ($tbdata[15] ne "") {
|
||||
$time++;
|
||||
|
@ -216,11 +242,13 @@ foreach $tbline (@tblines) {
|
|||
}
|
||||
$sylph_addr .= "</address-book>\n";
|
||||
|
||||
# print new addressbook to file
|
||||
open (NEWADDR, ">.sylpheed/$new_addrbk");
|
||||
print NEWADDR $sylph_addr;
|
||||
print NEWADDR $sylph_addr;
|
||||
close NEWADDR;
|
||||
|
||||
open (ADDRIN, "<.sylpheed/addrbook--index.xml") || die("can't open addrbook--index.xml");
|
||||
# add new addressbook to index
|
||||
open (ADDRIN, "<.sylpheed/addrbook--index.xml") || die("Can't open addrbook--index.xml");
|
||||
@addrindex_file = <ADDRIN>;
|
||||
close ADDRIN;
|
||||
|
||||
|
@ -234,8 +262,9 @@ foreach $addrindex_line (@addrindex_file) {
|
|||
}
|
||||
|
||||
open (NEWADDRIN, ">.sylpheed/addrbook--index.xml");
|
||||
print NEWADDRIN "$rewrite_addrin";
|
||||
print NEWADDRIN "$rewrite_addrin";
|
||||
close NEWADDRIN;
|
||||
|
||||
print "\nYou have sucessfully converted your The Bat! addressbook\n";
|
||||
print "You have sucessfully converted your The Bat! addressbook\n";
|
||||
print "New addressbook file name: $new_addrbk\n";
|
||||
print "Total addresses converted: $total_addresses\n";
|
||||
exit;
|
||||
|
|
Loading…
Reference in a new issue