Kalender auslesen mit python

Wen man seinen Kalender auf einem CalDAV-Server (z.B. mittels NextCloud) hat, lässt sich dieser via python einfach auslesen.

Dies ergibt interessante Anwendungen; so könnte man beispielsweise einen Ferienkalender erstellen und dann mittels einem python Script Aktionen auslösen, welche nur bei an- oder Abwesenheit erfolgen sollen

Ich nutze diese dies um bei meinem KNX-Smarthome an jeden „normalen“ Wochentag, morgens die Läden automatisch hochzufahren, ausgenommen ich habe an einem Wochentag zufällig Ferien. 😉

Dazu nötig ist das python Modul: python-caldav.

#!/usr/bin/python

### Imports
from datetime import datetime, timedelta, time
import caldav

### Variables
url = "https://myuser:secret@cloud.example.org/remote.php/dav/calendars/myuser/ferien/"
today  = datetime.combine(datetime.today(), time(0,0))

### Main
client = caldav.DAVClient(url)
principal = client.principal()
calendars = principal.calendars()

if len(calendars) > 0:
  calendar = calendars[0]
  events = calendar.date_search(today, datetime.combine(today, time(23,59,59,59)))

  if len(events) == 0:
    print "No events today!"
  else:
    print "Total {num_events} events:".format(num_events=len(events))

    for event in events:
      event.load()
      e = event.instance.vevent
      if e.dtstart.value.strftime("%H:%M") == "00:00":
        # This is an "allday" event
        eventTime = e.dtstart.value.strftime("%D")
        print "{eventTime} {eventSummary} ({eventLocation})".format(eventTime=eventTime, eventSummary=e.summary.value, eventLocation=e.location.value)
      else:
        # This is a "normal" event
        eventTime = e.dtstart.value.strftime("%H:%M")
        print "{eventTime} {eventSummary} ({eventLocation})".format(eventTime=eventTime, eventSummary=e.summary.value, eventLocation=e.location.value)

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert