snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ruby で iCalendar の予定データを読む

Ruby で iCalendar を扱いたいのでモジュールを探してみた。
$ gem search -r icalendar

*** REMOTE GEMS ***

icalendar (1.1.0)
vpim_icalendar (1.1)
この他に github で RiCal というのを見つけた。 ネット上には icalendar モジュールの情報がいちばん有るみたいなので、 とりあえず icalendar をインストール。
$ sudo gem install icalendar

このモジュールを使って、予定を表示するスクリプトを書いてみた。
ical-sample-01.rb
#!/usr/bin/ruby
# vi: ts=2

# iCalendar のファイル (*.ics) をパースして表示する

$KCODE = 'u'
require 'rubygems'
require 'icalendar'
require 'date'
#require 'kconv'

filename = ARGV.shift || exit(63)
ics = File.open(filename)

# iCalendar データをパースする
#cals = Icalendar.parse(ics)
#ics.close
#cal = cals.first
# 予めVCALENDARが1つだと分ってるなら single=true にして cal を直接取得。
cal = Icalendar.parse(ics, true)
ics.close

# 開始日時とサマリを表示
#cal.events.each do |event|
#  print event.dtstart.strftime("%F %T")
#  print ' ',  event.summary, "\n"
#end

# 開始日時でソート
cal.events.sort { |a, b| a.dtstart <=> b.dtstart }.each do |event|
  print event.dtstart.strftime("%F %T")
  print ' ',  event.summary, "\n"
end

dtstart は全て DateTime オブジェクトになる。 日付のみ指定した場合と 0時0分0秒を指定した場合が区別できない?

単純に VEVENT を順に表示するだけなので RRULE の展開とかはしてくれない。
スポンサーサイト

« Ruby で iCalendar の予定データを作成する|Top|Palm Desktop の予定データを読む Ruby スクリプト »

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://snbhsmt.blog110.fc2.com/tb.php/114-35a13c6d

Top

HOME

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。