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

システム

最近の投稿

  • この一週間の必需品
    6/22頃からの風邪の症状。鼻水と喉の痛みがあって、鼻スプレーと喉スプレーでだましだましの2週間。 […]
  • あづぃ…
    2F廊下温度35℃、WBGT30℃越え。 […]
  • gemini-cli 便利
    Gemini をコマンドラインから使えるツール gemini-cli が公開されている。 […]
  • LINE bot が動いていない… 月当たり最大数オーバー
    我が家では、以前より 自宅専用の LINE bot を動かしていて、サーバからの通知に使っていた。 […]
  • rkhunter の設定
    卒研のセキュリティの説明の中で rkhunter を紹介。説明してたら、自宅サーバにはサーバ機以降後に […]

アーカイブ

カテゴリー

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

ファンサイト