Я пишу небольшое настольное приложение, которое подключается к Календарю Google (или другим службам на платформе iCal) и отображает напоминания о событиях.Он автоматически перезагружает файл iCal очень часто.Если контрольная сумма файла изменилась, я выкидываю текущий кэш встреч и повторно анализирую календарь.
Дело в том, что это не работает с файлами Календаря Google.При дальнейшей проверке до меня дошло, что свойство DTSTAMP:
для всех событий меняется каждый раз, когда я перезагружаю файл iCal, связанный с определенным календарем.Таким образом, стандартная контрольная сумма не может быть способом пойти сюда.Есть два основных решения, которые я рассматриваю.
- Вычисление контрольной суммы на основе исходного файла с выброшенными строками
DTSTAMP:
. (грязный) - Реализация полного алгоритма сравнения календаря, который определяет, какие разделы календаря новые, какие были выброшены, какие изменились и т. Д. (дорого)
Я не знаю, есть ли в формате iCal какие-то другие причуды, которые я еще не обнаружил, поэтому я не знаю, решит ли метод 1 мою проблему.Ограниченные тесты, кажется, указывают, что это делает.С другой стороны, метод 2 кажется излишне дорогостоящим с точки зрения мощности процессора.
Что бы вы предложили?