2016-10-21 1 views
0

Ich würde gerne CalDAV Python-Modul verwenden, um die gesamte Information von einem Ereignis zu erhalten, habe ich einen Link für das Ereignis erhalten, aber ich verstehe nicht, wie die Ereignisdetails von diesem Ereignis erhalten, so habe ich den Link zu die Veranstaltung:Wie erhalte ich Veranstaltungsinformationen von einem Ereignislink?

https://mail.example.com:443/public-calendars/example.com/9A0F7585-A952-4E0C-868C-0C072A2D8740/9a0f7585-a952-4e0c-868c-0c072a2d8740-0000048a.eml 

Und ich dies versuchen, die Ereignisdetails zu erhalten:

event = 'https://mail.example.com:443/public-calendars/example.com/9A0F7585-A952-4E0C-868C-0C072A2D8740/9a0f7585-a952-4e0c-868c-0c072a2d8740-0000048a.eml' 
eventDetail = caldav.Event(event).load() 

Aber ich den Fehler bekommen:

AttributeError: 'str' object has no attribute 'request' 

Was ich so etwas wie dies möchte, ist bekommen:

BEGIN:VEVENT 
SUMMARY:event-title 
DTSTART;TZID=Europe/Warsaw:20150305T130000 
DTEND;TZID=Europe/Warsaw:20150305T140000 
DTSTAMP:20150624T170317Z 
UID:9149F870-5475-4120-9EE5-1A06E857807B 
SEQUENCE:1 
EXDATE;TZID=Europe/Warsaw:20150618T130000 
EXDATE;TZID=Europe/Warsaw:20150305T130000 
EXDATE;TZID=Europe/Warsaw:20150430T130000 
CREATED:20150226T105018Z 
DESCRIPTION: 
LAST-MODIFIED:20150616T094907Z 
LOCATION: 
RRULE:FREQ=WEEKLY;UNTIL=20150624T235959Z;INTERVAL=1 
STATUS:CONFIRMED 
TRANSP:OPAQUE 
BEGIN:VALARM 
ACTION:NONE 
TRIGGER;VALUE=DATE-TIME:19760401T005545Z 
UID:FC67F59E-5540-47BE-ACFA-FE229771EC11 
X-WR-ALARMUID:FC67F59E-5540-47BE-ACFA-FE229771EC11 
END:VALARM 
END:VEVENT 

Ich mag würde, dass in eine Variable setzen, so dass ich durch diese Informationen zu gehen und suchen für das, was ich brauche, oder in eine Datei senden.

Antwort

0

Mit Blick auf die Module caldav/objects.py ich sehe:

def __init__(self, client=None, url=None, data=None, parent=None, id=None) 

Sie sind in der URL als Client-Objekt (1. Parameter) vorbei, daher der Fehler.

Vielleicht würde dies funktionieren, aber wahrscheinlich nicht (zu laden, ist es durchaus braucht wahrscheinlich ein Client-Objekt):

eventDetail = caldav.Event(url=event).load() 

Aber ein Blick weiter nach unten das Modul sehe ich eine event_by_url auf dem Kalenderobjekt:

class Calendar(DAVObject): 
    ... 
    def event_by_url(self, href, data=None): 

Vermutlich haben Sie bereits Zugriff auf die Kalenderobjekte, so nehme ich es einfach sein kann:

event = calendar.event_by_url("/calendars/123.ics") 
+0

Ich fand heraus, dass dies im Grunde das spezifische Ereignis drucken wird: – dsturlan

+0

Drucken event.data Dann können Sie verschiedene Objekte für Ereignis, wie zum Beispiel Name: print event.name – dsturlan

Verwandte Themen