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