2015-03-03 23 views
5

C'è un modo semplice per ottenere gli eventi di un giorno da un file ical in Python?Python ical: ottieni eventi per un giorno compresi quelli ricorrenti

Per non ricorrenti, un giorno gli eventi che hanno usato qualcosa come

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 

Ma gli eventi ricorrenti verificarsi solo in walk volta.

Posso vedere come avere un iterazione di eventi infiniti per la ripetizione di eventi senza fine potrebbe essere un problema. Ma deve ancora esserci un modo più semplice di calcolare le ripetizioni da solo, giusto?

(Non riesco a trovare molta documentazione. Ho letto il test icalendar relativo a eventi ricorrenti ma non sembra che faccia nulla di simile).

+0

(Questa domanda non è ancora risolto. Ho già provato una piccola taglia, che è scaduto. Tutte le soluzioni sono ancora i benvenuti!) – Mark

risposta

2

Yeah.Instead di Ical farlo gcalcli

gcalcli è un'applicazione Python che permette di accedere al calendario (s) di Google da una riga di comando

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

+0

ho bisogno dei risultati in Python, mi dispiace che fosse un po 'poco chiaro. Può farlo (non trovo molto) o solo una riga di comando? – Mark

2

è possibile utilizzare pyICSParser.

Richiede un file ICS e restituisce le date degli eventi ricorrenti in un elenco di oggetti datetime.

È necessario specificare il timewindow in cui si desidera che tali eventi vengano restituiti, poiché in caso contrario gli eventi ricorrenti senza un parametro UNTIL o COUNT eseguiranno il rendering di un elenco infinito.

(diniego Sono l'autore del pacchetto)

+0

Hmm l'idea è davvero bella ma non riesco a farla funzionare. 'pip' lancia un' IOError' quindi ho scaricato il sorgente. Ho adattato l'esempio a 'mycal = iCalendar(); mycal.string_load (ical); print mycal.get_event_instances (start = '20150301', end = '20150315') 'per provare a farlo funzionare, ma ottenere una lunga traccia di eccezione. – Mark

+0

Sembra un buon pacchetto ma la documentazione è inesistente e non è in grado di leggere i file iCAL di Google Calendar. Fallisce con: 'RFC5545 specifica: \ '\ xc2 \ xa73.6.1 specifica che \' Il componente del calendario" VEVENT "non può essere nidificato all'interno di un altro componente del calendario. \ ', La riga seguente non è conforme \ n riga: 17 - FINE: VTIMEZONE'' – kleptog