adds some color to the mix
This commit is contained in:
parent
0c2dec4441
commit
1bd2dcd460
BIN
__pycache__/quickstart.cpython-36.pyc
Normal file
BIN
__pycache__/quickstart.cpython-36.pyc
Normal file
Binary file not shown.
1
calendars.json
Normal file
1
calendars.json
Normal file
@ -0,0 +1 @@
|
||||
{"calendars": [{"name": "Todoist"}, {"name": "https://intranet.fhwn.ac.at/ics/Default.aspx?FHTimetable.ics&id=YUWSjNJUx5I%3d&datediffmonths=1&replaceSpecialChars=1"}, {"name": "Hightower"}, {"name": "Home \ud83c\udfe0"}, {"name": "D-ARIA"}, {"name": "Office"}, {"name": "http://followshows.com/ical/AS3Bbq0q"}, {"name": "Grey"}, {"name": "Privat"}, {"name": "Work"}, {"name": "Social"}, {"name": "Life"}, {"name": "https://poledancevienna.at/mypdv/ical/XJSY-56GQ-G2VC"}, {"name": "Contacts"}, {"name": "Holidays in Austria"}, {"name": "Week Numbers"}]}
|
127
quickstart.py
127
quickstart.py
@ -1,6 +1,8 @@
|
||||
from __future__ import print_function
|
||||
import datetime
|
||||
import dateutil.parser
|
||||
import pickle
|
||||
import json
|
||||
import os.path
|
||||
from googleapiclient.discovery import build
|
||||
from google_auth_oauthlib.flow import InstalledAppFlow
|
||||
@ -9,15 +11,57 @@ from google.auth.transport.requests import Request
|
||||
# If modifying these scopes, delete the file token.pickle.
|
||||
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
|
||||
|
||||
visibleList = ['Hightower', 'Home \ud83c\udfe0', 'Office', 'Life', 'Social', 'Grey']
|
||||
|
||||
class Event:
|
||||
def __init__(self, name_, color_, start_, end_):
|
||||
def __init__(self, name_, colorId_, start_, end_):
|
||||
self.name = name_
|
||||
self.color = color_
|
||||
self.colorId = colorId_
|
||||
self.start = start_
|
||||
self.end = end_
|
||||
self.colorHex = '#adfff5'
|
||||
|
||||
if self.start == None or self.end == None :
|
||||
self.allDay = True
|
||||
else:
|
||||
self.allDay = False
|
||||
|
||||
def startDateTime(self):
|
||||
if self.allDay:
|
||||
return None
|
||||
return self.jsonFromDT(self.start)
|
||||
|
||||
def stopDateTime(self):
|
||||
if self.allDay:
|
||||
return None
|
||||
return self.jsonFromDT(self.end)
|
||||
|
||||
def jsonFromDT(self, string):
|
||||
sdt = dateutil.parser.parse(string)
|
||||
data = {
|
||||
'date': {
|
||||
'year': sdt.year,
|
||||
'month': sdt.month,
|
||||
'day': sdt.day
|
||||
},
|
||||
'time': {
|
||||
'hour': sdt.hour,
|
||||
'minute': sdt.minute,
|
||||
'second': sdt.second
|
||||
}
|
||||
}
|
||||
return data
|
||||
|
||||
def print(self):
|
||||
if self.allDay:
|
||||
print(self.name + "All Day")
|
||||
else:
|
||||
print(self.name + ": " + self.start + ", " + self.end)
|
||||
|
||||
|
||||
class Calendar:
|
||||
def __init__(self, calendarId_, color_):
|
||||
def __init__(self, summary_, calendarId_, color_):
|
||||
self.summary = summary_
|
||||
self.calendarId = calendarId_
|
||||
self.color = color_
|
||||
|
||||
@ -45,17 +89,36 @@ def calendarCredentials():
|
||||
|
||||
return service
|
||||
|
||||
def getCalendarEvents(service, startDate, endDate):
|
||||
def getCalendarColors(service):
|
||||
colors = service.colors().get().execute()
|
||||
return colors
|
||||
|
||||
def getCalendars(service):
|
||||
page_token = None
|
||||
calendars = []
|
||||
while True:
|
||||
calendar_list = service.calendarList().list(pageToken=page_token).execute()
|
||||
for calendar_list_entry in calendar_list['items']:
|
||||
calendars.append(Calendar(calendar_list_entry['id'], calendar_list_entry['colorId']))
|
||||
for calendar in calendar_list['items']:
|
||||
calendars.append(Calendar(calendar['summary'], calendar['id'], calendar['colorId']))
|
||||
page_token = calendar_list.get('nextPageToken')
|
||||
if not page_token:
|
||||
break
|
||||
|
||||
return calendars
|
||||
|
||||
def purgeCalendars(calendars):
|
||||
purged = []
|
||||
for calendar in calendars:
|
||||
print(calendar.summary)
|
||||
if calendar.summary in visibleList:
|
||||
purged.append(calendar)
|
||||
return purged
|
||||
|
||||
def getCalendarEvents(service, startDate, endDate):
|
||||
|
||||
calendars = getCalendars(service)
|
||||
calendars = purgeCalendars(calendars)
|
||||
|
||||
all_events = []
|
||||
|
||||
for calendar in calendars:
|
||||
@ -73,29 +136,51 @@ def getCalendarEvents(service, startDate, endDate):
|
||||
if color == None:
|
||||
color = calendar.color
|
||||
|
||||
all_events.append(Event(name, color, start, end))
|
||||
event = Event(name, color, start, end)
|
||||
all_events.append(event)
|
||||
|
||||
return all_events
|
||||
|
||||
def colorizeEvents(allEvents, colors):
|
||||
for event in allEvents:
|
||||
event.colorHex = colors['calendar'][event.colorId]['background']
|
||||
|
||||
def toJson(events):
|
||||
data = {}
|
||||
data['kind'] = 'calendar#events'
|
||||
data['events'] = []
|
||||
|
||||
for event in events:
|
||||
if event.allDay:
|
||||
continue
|
||||
data['events'].append({
|
||||
'name': event.name,
|
||||
'isAllDay': event.allDay,
|
||||
'color': event.colorHex,
|
||||
'startDateTime': event.startDateTime(),
|
||||
'stopDateTime': event.stopDateTime()
|
||||
})
|
||||
|
||||
with open('./calendarevents.json', 'w') as outfile:
|
||||
json.dump(data, outfile)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
service = calendarCredentials()
|
||||
# Call the Calendar API
|
||||
now = datetime.datetime.now(datetime.timezone.utc).astimezone()
|
||||
now = now.replace(hour=0, minute=0)
|
||||
today = now.isoformat() # + '+01:00' # 'Z' indicates UTC time
|
||||
print("today: ")
|
||||
print(today)
|
||||
# one_day = datetime.timedelta(days=1)
|
||||
tomorrow = (now.replace(hour=23, minute=0, second=1)).isoformat() # + '+01:00'
|
||||
print("tomorrow: ")
|
||||
print(tomorrow)
|
||||
all_events = getCalendarEvents(service, today, tomorrow)
|
||||
|
||||
# define today and tomorrow
|
||||
now = datetime.datetime.now(datetime.timezone.utc).astimezone()
|
||||
today = now.replace(hour=0, minute=0, second = 0).isoformat()
|
||||
tomorrow = now.replace(hour=23, minute=59, second=59).isoformat() # + '+01:00'
|
||||
|
||||
allEvents = getCalendarEvents(service, today, tomorrow)
|
||||
|
||||
colors = getCalendarColors(service)
|
||||
colorizeEvents(allEvents, colors)
|
||||
# if not events:
|
||||
# print('No upcoming events found.')
|
||||
for event in all_events:
|
||||
print(event.name + ": " + event.start + ", " + event.color)
|
||||
|
||||
toJson(allEvents)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
BIN
token.pickle
BIN
token.pickle
Binary file not shown.
Loading…
Reference in New Issue
Block a user