#!/usr/bin/env python3 from icalendar import Calendar import datetime def format_cal(event): start = event.get('dtstart').dt end = event.get('dtend').dt str = "" if isinstance(start, datetime.datetime): str += "Start: {:%Y-%m-%d %H:%M}\n".format(start.astimezone()) str += "End: {:%Y-%m-%d %H:%M}\n".format(end.astimezone()) elif isinstance(start, datetime.date): str += "Start: {:%Y-%m-%d}\n".format(start) str += "End: {:%Y-%m-%d}\n".format(end) if event.get('attendee') is not None: att = event.get('attendee') if not isinstance(att, list): att = [att] attendees = [ a.params['cn'] for a in att] str += "Attendees:\n" for a in attendees: str += "\t{}\n".format(a) str += "\n" description = event.get('description') if description is not None: str += description return str with open('/dev/stdin', 'r') as f: cal = Calendar.from_ical(f.read()) for c in cal.walk(): if c.name == "VEVENT": print(format_cal(c))