解析 Google 日历循环的 Python 解决方案
我正在尝试解析 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 的字段。 是否有现有的解决方案可以做到这一点?
I'm trying to parse GCal's recurrence field. Usually, it looks like this:
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
I need to extract valuable for me part: event's DTSTART, DTEND, RRULE, and other iCaledar's field.
Is there an existent solution for doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试神奇的库 python-dateutil (http://labix.org/python-dateutil)。
You can try the fantastic library python-dateutil (http://labix.org/python-dateutil).
我正在使用 mxm 的 icalendar 包:
http://codespeak.net/icalendar/
我很确定它将所有 ical 字段传递给已解析的对象。我不确定是否会再次出现,因为我只是不在我的应用程序中使用它,但我会惊讶地发现它不存在。
I'm using mxm's icalendar package:
http://codespeak.net/icalendar/
and I'm pretty sure it passes all ical fields to parsed objects. I'm not sure about reoccurence because I just don't use that in my app, but I would be surprised to find out it's not there.
由于我有类似的问题,并且找不到任何可以完成这项工作的东西,所以我刚刚在 pypi 上发布了一个小项目,它不仅会为您提供 DTSTART、DTEND、RRULE、RDATE、UID 和 SUMMARY 值,还会给出特定的值时间窗口返回满足 RRULE 规则的所有日期。
您可以在这里获取它:http://pypi.python.org/pypi/pyICSParser(请请注意,我根本不是软件工程师,因此良好的编码实践合规性很差,尽管我将处理文档,但仍处于非常早期的阶段)
As I have a similar problem and could not find anything doing the job, I've just released on pypi a small project which will not only give you the DTSTART, DTEND, RRULE, RDATE, UID and SUMMARY values but will also given a specific time window return all the dates that fullfill the RRULE rules.
You can get it here: http://pypi.python.org/pypi/pyICSParser (please note I'm not at all a SW engineer so good coding practices compliance is poor and though I'll work on documentation it is still very early stage)