Update inkycal_icalendar.py

This commit is contained in:
Ace 2019-11-25 21:32:25 +01:00 committed by GitHub
parent d734f36b7b
commit fe1a688def
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,7 +2,6 @@
# -*- coding: utf-8 -*-
"""
iCalendar (parsing) module for Inky-Calendar Project
Copyright by aceisace
"""
from __future__ import print_function
@ -11,10 +10,12 @@ from settings import ical_urls
import arrow
from ics import Calendar
print_events = True
print_events = False
style = 'DD MMM YY HH:mm' #D 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)
@ -22,9 +23,9 @@ further_future = now.replace(days=40)
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 = []
upcoming_events += [events for ical in calendars for events in ical.events
if now <= events.end <= further_future or now <= events.begin <= near_future]
upcoming_events = [events for ical in calendars for events in ical.events
if beginning_of_month <= events.end <= further_future or
beginning_of_month <= events.begin <= near_future]
"""Sort events according to their beginning date"""
def sort_dates(event):
@ -35,19 +36,15 @@ upcoming_events.sort(key=sort_dates)
for events in upcoming_events:
if events.all_day and events.duration.days > 1:
events.end = events.end.replace(days=-2)
""" 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."""
#print(upcoming_events) # Print all events. Might look a bit messy
"""Print upcoming events in a more appealing way"""
if print_events == True:
style = 'DD MMM YY HH:mm' #D MMM YY HH:mm
if upcoming_events:
line_width = max(len(i.name) for i in upcoming_events)
for events in upcoming_events:
print('{0} {1} | {2} | {3} |'.format(events.name,
' '* (line_width - len(events.name)), events.begin.format(style),
events.end.format(style)), events.all_day)
if print_events == True and upcoming_events:
line_width = max(len(i.name) for i in upcoming_events)
for events in upcoming_events:
print('{0} {1} | {2} | {3} | All day ='.format(events.name,
' '* (line_width - len(events.name)), events.begin.format(style),
events.end.format(style)), events.all_day)