2015-03-03 9 views
5

Gibt es eine einfache Möglichkeit, die Ereignisse eines Tages aus einer ical-Datei in Python zu bekommen?Python ical: Erhalten Sie Ereignisse für einen Tag einschließlich wiederkehrende

für einmalige ein Tag Ereignis Ich habe so etwas wie

from icalendar import Calendar 
for event in Calendar.from_ical(ical).walk('vevent'): 
    if edate > ref_ref_day_start and event.get('dtstart').dt < ref_day_end: 
     # code here 

Aber wiederkehrende Ereignisse treten nur in walk einmal verwendet.

Ich kann sehen, wie eine unendliche Ereignisiteration für die Wiederholung von Ereignissen ohne Ende ein Problem sein könnte. Aber trotzdem muss es einen einfacheren Weg geben, als die Wiederholungen selbst zu berechnen, oder?

(Ich kann nicht viel Dokumentation finden. Ich lese den icalendar Test in Bezug auf wiederkehrende Ereignisse, aber es scheint so etwas nicht zu tun).

+0

(Diese Frage noch nicht gelöst ist. Ich habe bereits versucht, eine kleine Prämie, die abgelaufen. Alle Lösungen sind immer noch sehr willkommen!) – Mark

Antwort

2

Yeah.Instead von Ical tut es durch gcalcli

gcalcli ist eine Python-Anwendung, die Sie Ihren Google Kalender (n) von einer Befehlszeile

[1] zugreifen kann: https://github.com/insanum/gcalcli

+0

Ich brauche die Ergebnisse in Python, sorry, das war ein wenig unklar. Kann es das tun (ich finde nicht viel) oder nur Befehlszeile? – Mark

2

können Sie pyICSparser verwenden.

Es dauert eine ICS-Datei und gibt die Daten wiederkehrender Ereignisse in einer Liste von datetime-Objekten zurück.

Sie müssen das Zeitfenster angeben, in dem diese Ereignisse zurückgegeben werden sollen. Andernfalls würden Ereignisse, die ohne den Parameter oder COUNT wiederholt werden, eine unendliche Liste darstellen.

(Disclaimer Ich bin der Autor des Pakets)

+0

Hmm, die Idee ist wirklich nett, aber ich kann es nicht zur Arbeit bringen. 'pip' löst einen' IOError' aus, also habe ich die Quelle heruntergeladen. Ich habe das Beispiel an 'mycal = iCalendar() angepasst; mycal.string_load (ical); Drucken Sie mycal.get_event_instances (start = '20150301', end = '20150315') ', um zu versuchen, es zum Laufen zu bringen, aber erhalten Sie eine lange Ausnahmespur. – Mark

+0

Sieht aus wie ein nettes Paket, aber die Dokumentation ist nicht vorhanden und kann keine Google Kalender iCAL-Dateien lesen. Es schlägt fehl mit: 'RFC5545 spezifiziert: \ '\ xc2 \ xa73.6.1 spezifiziert, dass \" Die "VEVENT" -Kalenderkomponente kann nicht innerhalb einer anderen Kalenderkomponente geschachtelt werden. \', Folgende Linie ist nicht konform \ n line: 17 - END: VTIMEZONE'' – kleptog