Решение Python для анализа повторений календаря Google

Я пытаюсь проанализировать поле повторения GCal. Обычно это выглядит так:

DTSTART;TZID=Europe/Kiev:20101111T140000
DTEND;TZID=Europe/Kiev:20101111T150000
RRULE:FREQ=DAILY;UNTIL=20101112T120000Z
BEGIN:VTIMEZONE
TZID:Europe/Kiev
X-LIC-LOCATION:Europe/Kiev
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:19700329T030000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19701025T040000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE

Мне нужно извлечь ценную для меня часть: события DTSTART, DTEND, RRULE и другие поля iCaledar. Есть ли существующее решение для этого?


person cleg    schedule 10.11.2010    source источник
comment
Каков твой вопрос? Вы хотите разобрать всю запись, понять формат строк RRULE, что-то еще?   -  person The Archetypal Paul    schedule 10.11.2010
comment
Я хочу проанализировать всю запись и извлечь события DTSTART, DTEND, RRULE и RDATE.   -  person cleg    schedule 10.11.2010


Ответы (3)


Вы можете попробовать фантастическую библиотеку python-dateutil (http://labix.org/python-dateutil).

person Antonio Beamud    schedule 10.11.2010
comment
Я пробовал эту библиотеку, но она совместима только с iCaledar и не понимает поля DTEND и других дополнений. - person cleg; 10.11.2010
comment
для DTEND вы можете использовать до, как параметр правила. ¿Какие еще дополнения вам нужны? - person Antonio Beamud; 11.11.2010
comment
@cleg: не путайте стандарт iCalendar (RFC 2445, теперь RFC 5545) с программой iCalendar. Календарь, который вы показываете выше, имеет формат iCalendar. - person Ulrich Schwarz; 14.11.2010
comment
Вот и я тоже попал. Я сделал простой анализ ical dtstart, используя strptime, а затем передал его в dateutil.rrule.rrulestr. - person Julian; 10.06.2014

Я использую пакет mxm icalendar:

http://codespeak.net/icalendar/

и я почти уверен, что он передает все ical поля анализируемым объектам. Я не уверен насчет повторения, потому что я просто не использую это в своем приложении, но я был бы удивлен, узнав, что его там нет.

person GDR    schedule 14.11.2010
comment
Глядя на эту ссылку, вы можете подумать, что библиотека не обновлялась 4 года. Более свежие версии можно найти здесь: pypi.python.org/pypi/icalendar - person mbarkhau; 13.12.2010

Поскольку у меня похожая проблема, и я не смог найти ничего, выполняющего эту работу, я только что выпустил на pypi небольшой проект, который не только даст вам значения DTSTART, DTEND, RRULE, RDATE, UID и SUMMARY, но также даст конкретные временное окно возвращает все даты, соответствующие правилам RRULE.

Вы можете получить его здесь: http://pypi.python.org/pypi/pyICSParser (пожалуйста, обратите внимание, что я вовсе не инженер ПО, поэтому соблюдение хороших методов кодирования плохое, и хотя я буду работать над документацией, это все еще очень ранняя стадия)

person Auberon Vacher    schedule 28.01.2012