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
|
from __future__ import print_function
|
||||||
import datetime
|
import datetime
|
||||||
|
import dateutil.parser
|
||||||
import pickle
|
import pickle
|
||||||
|
import json
|
||||||
import os.path
|
import os.path
|
||||||
from googleapiclient.discovery import build
|
from googleapiclient.discovery import build
|
||||||
from google_auth_oauthlib.flow import InstalledAppFlow
|
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.
|
# If modifying these scopes, delete the file token.pickle.
|
||||||
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
|
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
|
||||||
|
|
||||||
|
visibleList = ['Hightower', 'Home \ud83c\udfe0', 'Office', 'Life', 'Social', 'Grey']
|
||||||
|
|
||||||
class Event:
|
class Event:
|
||||||
def __init__(self, name_, color_, start_, end_):
|
def __init__(self, name_, colorId_, start_, end_):
|
||||||
self.name = name_
|
self.name = name_
|
||||||
self.color = color_
|
self.colorId = colorId_
|
||||||
self.start = start_
|
self.start = start_
|
||||||
self.end = end_
|
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:
|
class Calendar:
|
||||||
def __init__(self, calendarId_, color_):
|
def __init__(self, summary_, calendarId_, color_):
|
||||||
|
self.summary = summary_
|
||||||
self.calendarId = calendarId_
|
self.calendarId = calendarId_
|
||||||
self.color = color_
|
self.color = color_
|
||||||
|
|
||||||
@ -45,17 +89,36 @@ def calendarCredentials():
|
|||||||
|
|
||||||
return service
|
return service
|
||||||
|
|
||||||
def getCalendarEvents(service, startDate, endDate):
|
def getCalendarColors(service):
|
||||||
|
colors = service.colors().get().execute()
|
||||||
|
return colors
|
||||||
|
|
||||||
|
def getCalendars(service):
|
||||||
page_token = None
|
page_token = None
|
||||||
calendars = []
|
calendars = []
|
||||||
while True:
|
while True:
|
||||||
calendar_list = service.calendarList().list(pageToken=page_token).execute()
|
calendar_list = service.calendarList().list(pageToken=page_token).execute()
|
||||||
for calendar_list_entry in calendar_list['items']:
|
for calendar in calendar_list['items']:
|
||||||
calendars.append(Calendar(calendar_list_entry['id'], calendar_list_entry['colorId']))
|
calendars.append(Calendar(calendar['summary'], calendar['id'], calendar['colorId']))
|
||||||
page_token = calendar_list.get('nextPageToken')
|
page_token = calendar_list.get('nextPageToken')
|
||||||
if not page_token:
|
if not page_token:
|
||||||
break
|
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 = []
|
all_events = []
|
||||||
|
|
||||||
for calendar in calendars:
|
for calendar in calendars:
|
||||||
@ -73,29 +136,51 @@ def getCalendarEvents(service, startDate, endDate):
|
|||||||
if color == None:
|
if color == None:
|
||||||
color = calendar.color
|
color = calendar.color
|
||||||
|
|
||||||
all_events.append(Event(name, color, start, end))
|
event = Event(name, color, start, end)
|
||||||
|
all_events.append(event)
|
||||||
|
|
||||||
return all_events
|
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():
|
def main():
|
||||||
|
|
||||||
service = calendarCredentials()
|
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:
|
# if not events:
|
||||||
# print('No upcoming events found.')
|
# print('No upcoming events found.')
|
||||||
for event in all_events:
|
|
||||||
print(event.name + ": " + event.start + ", " + event.color)
|
toJson(allEvents)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
BIN
token.pickle
BIN
token.pickle
Binary file not shown.
Loading…
Reference in New Issue
Block a user