2012-03-08 16 views
0

Googleカレンダー(または他のiCal搭載サービス)に接続し、イベントリマインダーを表示する小さなデスクトップアプリケーションを作成しています。自動的にiCalファイルを自動的に再ダウンロードします。ファイルのチェックサムが変更された場合は、現在の予定キャッシュを破棄し、カレンダーを再解析します。iCalファイルの変更を検出する

これは、Googleカレンダーファイルでは機能しません。さらに調べると、特定のカレンダーに関連付けられたiCalファイルを再ダウンロードするたびに、すべてのイベントのDTSTAMP:がすべて変更されたことに気づいた。したがって、標準のチェックサムがここに行く方法ではないかもしれません。私が検討している2つの主要な解決策があります。

  • DTSTAMP:行が投げ捨てられた元のファイルに基づいてチェックサムを計算します。 (汚れ)など、変更された、投げ出されていたカレンダーのセクションが新しく追加されたかを検出フルカレンダーのdiffアルゴリズムを実装
  • (高価な)

私は「ドンiCalフォーマットにまだ発見されていない他の癖があるかどうかはわかりません。そのため、方法1で問題が解決するかどうかはわかりません。限られたテストは、それがそうであることを示すようです。一方、方法2では、CPUパワーの面で不必要にコストがかかるように見えます。

あなたは何をお勧めしますか?

答えて

1

Googleカレンダーがrfc5545の100%に続くかどうかはわかりませんが、「リビジョンのシーケンス内のカレンダーコンポーネントのリビジョンシーケンス番号を定義する」シーケンス番号が必要です。

+0

これは、diffアルゴリズム[(コンテキスト)](http://www.kanzaki.com/docs/ical/sequence.html)を実装する場合に便利です。 GoogleのICSファイルにはこのフィールドがあることを確認できますが、そのフィールドが一貫して適用されているかどうかはわかりません。 – Pieter

関連する問題