2010年8月8日日曜日

IS02を買ったからガラケーから電話帳の移行

W43K→からIS02への移行をした

1.W43KにマイクロSDを挿して電話帳を保存

2.スマートフォンアドレス帳移行ツールでIMPORTすればOK

ちなみにW43Kのアドレス帳はvcf形式になっていた
csvに変換してから適当に編集してからIS02にIMPORTした
vcf→csv
#!/usr/bin/perl
use feature qw(say);
use warnings;
use strict;

our %date;
our @order;
while (<DATA>){
 chomp;
 $date{$_}=1;
 push (@order,$_);
 print "$_,";
}
print "\n";

my $infile=shift || "20100801.vcf";

open (FH,$infile) or die $!;
my %hash;
while (<FH>){
 chomp;
 my ($key,$value) = split (/:/);
 &check($key);
 unless (defined $hash{$key}){
  $hash{$key}=$value;
 }
 elsif ($key eq "EMAIL") {
  $hash{"EMAIL2"}=$value;
 }
 else {
  die "Error!";
 }
 if ($key eq "END"){
  for (@order){
   $hash{$_} ||="";
   print "$hash{$_},";
  }
  print "\n";
  %hash=();
 }
}
close FH;

sub check {
 unless ($date{$_[0]}){
  die "Data Error -> $_[0]";
 }
}

__END__
BEGIN
VERSION
N
FN
SORT-STRING
TEL;TYPE=WORK
TEL;TYPE=CELL
TEL;TYPE=PCS
TEL;TYPE=HOME
TEL;TYPE=FAX
EMAIL
EMAIL2
BDAY
X-GN
END


csv→vcf
#!/usr/bin/perl
use feature qw(say);
use warnings;
use strict;

our @order;
while (){
 chomp;
 push (@order,$_);
}

my $infile = shift || "adress.csv";
open (FH,$infile) or die $!;
$_=;
while (){
 chomp;
 my @list=split (/,/);
 s/^\"(.*)\"$/$1/ for @list;
 my $i=0;
 for (@order){
  print "$_:".$list[$i]."\n" if (defined $list[$i] and $list[$i] ne "");
  $i++;
 }
}
close FH;


__END__
BEGIN
VERSION
N
FN
SORT-STRING
TEL;TYPE=WORK
TEL;TYPE=CELL
TEL;TYPE=PCS
TEL;TYPE=HOME
TEL;TYPE=FAX
EMAIL
EMAIL
BDAY
X-GN
END

0 件のコメント: