私は、Google カレンダー (または他の iCal ベースのサービス) にプラグインしてイベント リマインダーを表示する小さなデスクトップ アプリケーションを作成しています。iCal ファイルが頻繁に自動的に再ダウンロードされます。ファイルのチェックサムが変更された場合は、現在の予定のキャッシュを破棄し、カレンダーを再解析します。
問題は、これは Google カレンダー ファイルでは機能しないということです。さらに調べてみると、特定のカレンダーに関連付けられた iCal ファイルを再ダウンロードするたびに、すべてのイベントのDTSTAMP:
プロパティが変更されていることがわかりました。したがって、標準のチェックサムはここに行く方法ではないかもしれません。私が考えている主な解決策は2つあります。
- 元のファイルに基づいて、
DTSTAMP:
行が破棄されたチェックサムを計算します。(汚れた) - カレンダーのどのセクションが新しいか、破棄されたか、変更されたかなどを検出する完全なカレンダー差分アルゴリズムの実装(高価)
iCal 形式に、まだ発見していない癖があるかどうかはわかりません。そのため、方法 1 で問題が解決するかどうかはわかりません。限られたテストでは、そうであることが示されているようです。一方、方法 2 は、CPU パワーの点で不必要にコストがかかるように見えます。
何を提案しますか?