vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Поразвлекался еще тут немного с не самым мейнстримным календарным софтом - vCalendar plugin к claws-mail
и calcurse.

Задача, которую хочется решить - это обеспечить нормальную синхронизацию между андродидным календарем и десктопным с использованием своего caldav сервера (в качестве которог у меня radicale).

То есть получается следуюая картина:

Есть vdirsyncer, который синхронизирует локальный ics-файл с сервером, есть андроидные устройства на которых тоже все впорядке.

vCalendar plugin умеет импортировать ics. И даже автоматически его обновалять. В режиме чтения все нормально.
Но вот создавать новые события он будет не в импортированном календаре а в своем собственном (они выглядят в дереве папок как две соседние папки внутри vCalendar).

Он умеет экспортировать свой календарь в .ics-файл. Но в другой. И даже вызывать указанную программу после экспорта. И при этом:

1. Делает его нечитаемым для питоновского модуля vobject, на базе котрого сделан radicale. Путем добавления туда некоторых полей с датой 0000000T000000 на которые питон весьма обоснованно ругается "не бывает нулевого месяца".
2. экспортирует не только новые события но и те, которые были эксполртированы.
3. Таймзону ставит GMT.

Следовательно, если я хочу обратно засинхронизировать события, измененные в claws-mail в radicale, мне нужно
0. Перед разбором средствами модуля vobject удалить поля с некорректной датой.
1. Выцепить из экспортированного файла новые события
2. Поменять им временную зону на ту, которую использует radicale
3. Скопировать их в тот календарь, который синхронизирует vdirsyncer.

В принципе все это на питоне через тот же vobject делается в два экрана. Но может быть лучше взять исходники плагина и поправить. (хотя это -то придется делать на C++).

Что касается calcurse, то при всех его симпатичных свойствах он использует собственный формат хранения, а не ics. И при повтороном импорте изменившегося ics-файла дублирует события - отфильтровать по uid не догадыватеся.
Зато его можно повесить обработчиком mime-тип text/calendar в текстовый почтовый клиент вроде mutt.
Но только если этот клиент у вас единственный и ни с чем синхронизировать его вы не хотите. Или по крайней мере все остальные календари будут read-only.

Возникает мысль взять питоновские модули curses и написать программму с интерфейсмо в точности как у calcurse, но использующую в качестве backend-хранилища ics-файл, синхронизируемый vdirsyncer-ом.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

March 2026

S M T W T F S
1 2 34567
8 910 11121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 13th, 2026 06:33 am
Powered by Dreamwidth Studios