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 12, 2024
1 parent 2106cf5 commit a14aff8
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions examples/caldav-get-lib.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env python3
import caldav
import json
from os import environ as env

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 a14aff8

Please sign in to comment.