ホーム » 未分類 » iCalendar ファイルを 携帯用の vCalendar 形式に変換

システム

最近の投稿

アーカイブ

カテゴリー

iCalendar ファイルを 携帯用の vCalendar 形式に変換

様々なカレンダーでの共通形式でもある iCalendar 形式のデータを、 携帯のスケジュールとして送る時に vCalendar 形式に変換する必要がある。 以前は、シコシコと変換してたけど、改めて iCalendar 関連の perl モジュールを 見ていたら、最近は完成度の高いモジュールが揃っている。 改めて書き直したら、実質20行未満になった。

#!/usr/bin/perl

use Jcode ;
use Text::vFile::asData ;
use MIME::QuotedPrint ;

$eol = "\r\n" ;

sub ical2vcal( $ ) {
my $fh = shift ;
my $data = Text::vFile::asData->new->parse( $fh ) ;
foreach $line ( Text::vFile::asData->generate_lines( $data ) ) {

# 必要に応じて文字列をQuotedPrintableに変換
if ( $line =~ /^(SUMMARY|LOCATION):(.*)$/ ) {
($key,$value) = ($1,$2) ;
## 無駄なコード変換だったので削除
# $line = "$key;ENCODING=QUOTED-PRINTABLE:"
# .encode_qp( Jcode->new( $value )->sjis , $eol ) ; $line = "$key;ENCODING=QUOTED-PRINTABLE:" .encode_qp( $value , $eol ) ; } elsif ( $line =~ /^(CATEGORIES):(.*)$/ ) { $line = "CATEGORIES:MISCELLANEOUS" ; } elsif ( $line =~ /^(SEQUENCE|CLASS|STATUS|TRANSP):(.*)$/ ) { $line = "" ; } print "$line$eol" if ( $line ne "" ) ; } } if ( @ARGV > 0 ) { foreach $file ( @ARGV ) { open my $fh , $file or die "Can't open file:$!" ; ical2vcal( $fh ) ; close $fh ; } } else { ical2vcal( STDIN ) ; }

追記:携帯に送ると、CATEGORIES,SEQUENCEなどが問題となったので処理を追加。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト