Вопрос

Я пишу небольшое настольное приложение, которое подключается к Календарю Google (или другим службам на базе iCal) и отображает напоминания о событиях.Он автоматически перезагружает файл iCal время от времени.Если контрольная сумма файла изменилась, я удаляю текущий кеш встреч и повторно анализирую календарь.

Дело в том, что это не работает с файлами Календаря Google.При дальнейшем осмотре я обратил внимание, что DTSTAMP: свойство все события менялись каждый раз, когда я повторно загружал файл iCal, связанный с определенным календарем.Таким образом, стандартная контрольная сумма здесь может не подойти.Я рассматриваю два основных решения.

  • Вычисление контрольной суммы на основе исходного файла с DTSTAMP: линии выброшены. (грязный)
  • Реализация полного алгоритма сравнения календаря, который определяет, какие разделы календаря являются новыми, какие выброшены, какие изменились и т. д. (дорогой)

Я не знаю, есть ли у формата iCal какие-либо другие особенности, которые я еще не обнаружил, поэтому я не знаю, решит ли метод 1 мою проблему.Ограниченные тесты, кажется, указывают на то, что это так.С другой стороны, метод 2 кажется излишне затратным с точки зрения мощности процессора.

Что ты предлагаешь?

Это было полезно?

Решение

Не уверен, что календарь Google на 100% соответствует rfc5545, но должен быть порядковый номер, который «определяет порядковый номер ревизии компонента календаря в последовательности ревизий».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top