Added support for recurring events
A special thank you to Hubert for taking the time to implement support for recurring events. You've been a great help!
This commit is contained in:
		| @@ -15,6 +15,10 @@ from time import sleep | ||||
| from settings import * | ||||
| from icon_positions_locations import * | ||||
|  | ||||
| from dateutil.rrule import * | ||||
| from dateutil.parser import parse | ||||
| import re | ||||
|  | ||||
| from PIL import Image, ImageDraw, ImageFont, ImageOps | ||||
| import pyowm | ||||
| from ics import Calendar | ||||
| @@ -198,7 +202,24 @@ def main(): | ||||
|                 # print(fix_e_2) | ||||
|                 ical = Calendar(fix_e_2) | ||||
|                 for events in ical.events: | ||||
|                    if re.search('RRULE',str(events)) is not None: | ||||
|                            r = re.search('RRULE:(.+?)\n',str(events)) | ||||
|                            r_start = re.search('DTSTART:(.+?)\n',str(events)) | ||||
|                            if time.now().month == 12: | ||||
|                                r_string=(r.group(1).rstrip()+';UNTIL='+'%04d%02d%02d'+'T000000Z') % (time.now().year+1, 1, 1) | ||||
|                            else: | ||||
|                                r_string=(r.group(1).rstrip()+';UNTIL='+'%04d%02d%02d'+'T000000Z') % (time.now().year, time.now().month+1, 1) | ||||
|                            rule=rrulestr(r_string,dtstart=parse(r_start.group(1))) | ||||
|                            for i in rule: | ||||
|                                if i.year == time.now().year and i.month == time.now().month and i.day >= time.now().day: | ||||
|                                    upcoming.append({'date':str(time.now().year) + " " + time.now().strftime('%m')+ " " + str(i.day).zfill(2), 'event':events.name}) | ||||
|                                    if i.day not in events_this_month: | ||||
|                                       events_this_month.append(i.day) | ||||
|                                    # uncomment this line to see fetched recurring events | ||||
|                                    #print ("Appended recurring event: " + events.name + " on " + str(time.now().year) + " " + time.now().strftime('%m')+ " " + str(i.day).zfill(2)) | ||||
|                    else: | ||||
|                        if events.begin.date().month == today.month: | ||||
|                           if int((events.begin).format('D')) not in events_this_month: | ||||
|                              events_this_month.append(int((events.begin).format('D'))) | ||||
|                        if today <= events.begin.date() <= time_span: | ||||
|                           upcoming.append({'date':events.begin.format('YYYY MM DD'), 'event':events.name}) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user