Skip to content

Commit

Permalink
feat: example of using with external library
Browse files Browse the repository at this point in the history
  • Loading branch information
Крылов Александр committed Jul 13, 2024
1 parent 2106cf5 commit 70337c5
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions examples/get_events_example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/usr/bin/env python3
import json
from os import environ as env

import caldav

username = env["CALDAV_USERNAME"]
password = env["CALDAV_PASSWORD"]
url = env["CALDAV_URL"]
caldav_url = f"https://{url}/{username}/"
headers = {}


def fetch_and_print():
with caldav.DAVClient(
url=caldav_url,
username=username,
password=password,
# Optional parameter to set HTTP headers on each request if needed
headers=headers,
) as client:
print_calendars_demo(client.principal().calendars())


def print_calendars_demo(calendars):
if not calendars:
return
events = []
for calendar in calendars:
for event in calendar.events():
for component in event.icalendar_instance.walk():
if component.name != "VEVENT":
continue
events.append(fill_event(component, calendar))
print(json.dumps(events, indent=2, ensure_ascii=False))


def fill_event(component, calendar) -> dict[str, str]:
cur = {}
cur["calendar"] = f"{calendar}"
cur["summary"] = component.get("summary")
cur["description"] = component.get("description")
cur["start"] = component.get("dtstart").dt.strftime("%m/%d/%Y %H:%M")
endDate = component.get("dtend")
if endDate and endDate.dt:
cur["end"] = endDate.dt.strftime("%m/%d/%Y %H:%M")
cur["datestamp"] = component.get("dtstamp").dt.strftime("%m/%d/%Y %H:%M")


if __name__ == "__main__":
fetch_and_print()

0 comments on commit 70337c5

Please sign in to comment.