Pull recent commits #1

Merged
mgfcf merged 39 commits from master into master 2019-02-19 20:36:07 +01:00
Showing only changes of commit 0b84d46c43 - Show all commits

View file

@ -191,36 +191,57 @@ def main():
print('Fetching events from your calendar'+'\n') print('Fetching events from your calendar'+'\n')
events_this_month = [] events_this_month = []
upcoming = [] upcoming = []
for icalendars in ical_urls: for icalendars in ical_urls:
ical = Calendar(urlopen(icalendars).read().decode()) decode = str(urlopen(icalendars).read().decode())
#fix a bug related to Alarm action by replacing parts of the icalendar
fix_e = decode.replace('BEGIN:VALARM\r\nACTION:NONE','BEGIN:VALARM\r\nACTION:DISPLAY\r\nDESCRIPTION:')
#uncomment line below to display your calendar in ical format
#print(fix_e)
ical = Calendar(fix_e)
for events in ical.events: for events in ical.events:
if time.now().strftime('%-m %Y') == (events.begin).format('M YYYY'): if time.now().strftime('%-m %Y') == (events.begin).format('M YYYY') and (events.begin).format('DD') >= time.now().strftime('%d'):
upcoming.append({'date':events.begin.format('D MMM'), 'event':events.name}) upcoming.append({'date':events.begin.format('DD MMM'), 'event':events.name})
events_this_month.append(int((events.begin).format('D'))) events_this_month.append(int((events.begin).format('D')))
if month == 12: if month == 12:
if (1, year+1) == (1, int((events.begin).year)): if (1, year+1) == (1, int((events.begin).year)):
upcoming.append({'date':events.begin.format('D MMM'), 'event':events.name}) upcoming.append({'date':events.begin.format('DD MMM'), 'event':events.name})
if month != 12: if month != 12:
if (month+1, year) == (events.begin).format('M YYYY'): if (month+1, year) == (events.begin).format('M YYYY'):
upcoming.append({'date':events.begin.format('D MMM'), 'event':events.name}) upcoming.append({'date':events.begin.format('DD MMM'), 'event':events.name}) # HS sort events by date
def takeDate(elem):
return elem['date']
upcoming.sort(key=takeDate)
del upcoming[4:] del upcoming[4:]
# uncomment the following 2 lines to display the fetched events
# from your iCalendar
print('Upcoming events:')
print(upcoming)
#Credit to Hubert for suggesting truncating event names
def write_text_left(box_width, box_height, text, tuple): def write_text_left(box_width, box_height, text, tuple):
text_width, text_height = font.getsize(text) text_width, text_height = font.getsize(text)
if (text_width, text_height) > (box_width, box_height): while (text_width, text_height) > (box_width, box_height):
raise ValueError('Sorry, your text is too big for the box') text=text[0:-1]
else: text_width, text_height = font.getsize(text)
y = int((box_height / 2) - (text_height / 2)) y = int((box_height / 2) - (text_height / 2))
space = Image.new('L', (box_width, box_height), color=255) space = Image.new('L', (box_width, box_height), color=255)
ImageDraw.Draw(space).text((0, y), text, fill=0, font=font) ImageDraw.Draw(space).text((0, y), text, fill=0, font=font)
image.paste(space, tuple) image.paste(space, tuple)
"""Write event dates and names on the E-Paper""" """Write event dates and names on the E-Paper"""
for dates in range(len(upcoming)): for dates in range(len(upcoming)):
write_text(70, 25, (upcoming[dates]['date']), date_positions['d'+str(dates+1)]) write_text(70, 25, (upcoming[dates]['date']), date_positions['d'+str(dates+1)])
for events in range(len(upcoming)):
write_text_left(314, 25, (upcoming[events]['event']), event_positions['e'+str(events+1)])
"""Write event dates and names on the E-Paper"""
for dates in range(len(upcoming)):
write_text(70, 25, (upcoming[dates]['date']), date_positions['d'+str(dates+1)])
for events in range(len(upcoming)): for events in range(len(upcoming)):
write_text_left(314, 25, (upcoming[events]['event']), event_positions['e'+str(events+1)]) write_text_left(314, 25, (upcoming[events]['event']), event_positions['e'+str(events+1)])