Update inkycal_icalendar.py

This commit is contained in:
Ace 2019-12-05 23:06:45 +01:00 committed by GitHub
parent 36d553660c
commit 6b7366924a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -13,38 +13,42 @@ from ics import Calendar
print_events = False print_events = False
style = 'DD MMM YY HH:mm' style = 'DD MMM YY HH:mm'
"""Set timelines for filtering upcoming events"""
now = arrow.now(tz=get_tz())
beginning_of_month = now.replace(days= - now.day +1)
near_future = now.replace(days= 30)
further_future = now.replace(days=40)
"""Parse the iCalendars from the urls, fixing some known errors with ics""" def fetch_events():
calendars = [Calendar(fix_ical(url)) for url in ical_urls] """Set timelines for filtering upcoming events"""
now = arrow.now(tz=get_tz())
beginning_of_month = now.replace(days= - now.day +1)
near_future = now.replace(days= 30)
further_future = now.replace(days=40)
"""Filter any upcoming events from all iCalendars and add them to a list""" """Parse the iCalendars from the urls, fixing some known errors with ics"""
upcoming_events = [events for ical in calendars for events in ical.events calendars = [Calendar(fix_ical(url)) for url in ical_urls]
"""Filter any upcoming events from all iCalendars and add them to a list"""
upcoming_events = [events for ical in calendars for events in ical.events
if beginning_of_month <= events.end <= further_future or if beginning_of_month <= events.end <= further_future or
beginning_of_month <= events.begin <= near_future] beginning_of_month <= events.begin <= near_future]
"""Sort events according to their beginning date""" """Sort events according to their beginning date"""
def sort_dates(event): def sort_dates(event):
return event.begin return event.begin
upcoming_events.sort(key=sort_dates) upcoming_events.sort(key=sort_dates)
"""Multiday events are displayed incorrectly; fix that""" """Multiday events are displayed incorrectly; fix that"""
for events in upcoming_events: for events in upcoming_events:
if events.all_day and events.duration.days > 1: if events.all_day and events.duration.days > 1:
events.end = events.end.replace(days=-2) events.end = events.end.replace(days=-2)
""" The list upcoming_events should not be modified. If you need the data from """ The list upcoming_events should not be modified. If you need the data from
this one, copy the list or the contents to another one.""" this one, copy the list or the contents to another one."""
#print(upcoming_events) # Print all events. Might look a bit messy #print(upcoming_events) # Print all events. Might look a bit messy
"""Print upcoming events in a more appealing way""" """Print upcoming events in a more appealing way"""
if print_events == True and upcoming_events: if print_events == True and upcoming_events:
line_width = max(len(i.name) for i in upcoming_events) line_width = max(len(i.name) for i in upcoming_events)
for events in upcoming_events: for events in upcoming_events:
print('{0} {1} | {2} | {3} | All day ='.format(events.name, print('{0} {1} | {2} | {3} | All day ='.format(events.name,
' '* (line_width - len(events.name)), events.begin.format(style), ' '* (line_width - len(events.name)), events.begin.format(style),
events.end.format(style)), events.all_day) events.end.format(style)), events.all_day)
return upcoming_events