]> vault307.fbx.one Git - mu_code.git/blob - loopCalWeek.py
early learning in mu editor
[mu_code.git] / loopCalWeek.py
1 #!/usr/bin/env python3
2 # display events for next 7 days
3 from __future__ import print_function
4 import datetime
5 import os.path
6
7 import tkinter as tk
8 from tkinter import ttk
9
10 from google.auth.transport.requests import Request
11 from google.oauth2.credentials import Credentials
12 from google_auth_oauthlib.flow import InstalledAppFlow
13 from googleapiclient.discovery import build
14 from googleapiclient.errors import HttpError
15
16 SCOPES=['https://www.googleapis.com/auth/calendar.readonly']
17
18 """Shows basic usage of the Google Calendar API.
19 Prints the start and name of the next 7 days on the user's calendar
20 """
21 creds=None
22 if os.path.exists('token.json'):
23 creds=Credentials.from_authorized_user_file('token.json', SCOPES)
24 if not creds or not creds.valid:
25 if creds and creds.expired and creds.refresh_token:
26 creds.refresh(Request())
27 else:
28 flow=InstalledAppFlow.from_client_secrets_file(
29 'credentials-sheets.json',SCOPES)
30 creds=flow.run_local_server(port=0)
31 with open('token.json','w') as token:
32 token.write(creds.to_json())
33
34 try:
35 service=build('calendar','v3',credentials=creds)
36 window=tk.Tk()
37 window.title('next 7 days')
38
39 # Call the Calendar API
40 now=datetime.datetime.utcnow().isoformat()+'Z' #datetime in crrct frmt
41 today=datetime.datetime.now()
42 max=(today+datetime.timedelta(days=7)).isoformat()+'Z'
43 print("Getting the week's events")
44 events_result=service.events().list(calendarId='primary',
45 timeMin=now,timeMax=max,singleEvents=True,
46 orderBy='startTime',prettyPrint=True).execute()
47 events=events_result.get('items',[]) #list of dict (event=dict)
48 #second calendar
49 events_result2=service.events().list(calendarId='greendaygirl0123@gmail.com',
50 timeMin=now,timeMax=max,singleEvents=True,
51 orderBy='startTime').execute()
52 events2=events_result2.get('items',[])
53
54 if not events:
55 print('No upcoming events found.')
56
57 if not events2:
58 print('No upcoming events2 found.')
59
60
61
62 for event in events:
63 start=datetime.datetime.fromisoformat(
64 event['start'].get('dateTime',event['start'].get('date')))
65 Start=start.strftime("%a %m-%d %I:%M %p")
66 description=event.get('description','')
67 eventLblJ=tk.Label(window,text=(Start, event['summary'], description),
68 fg='cyan',bg='black',relief='sunken')
69 eventLblJ.grid(stick='nsew')
70
71 keyLblJ=tk.Label(window,text="Jimmy",bg='black',fg='cyan',
72 relief='sunken')
73 keyLblJ.grid(sticky='nsew')
74 keyLblK=tk.Label(window,text="Katie",bg='cyan',relief='sunken')
75 keyLblK.grid(sticky='nsew')
76
77 for event2 in events2:
78 start2=datetime.datetime.fromisoformat(
79 event2['start'].get('dateTime',event2['start'].get('date')))
80 Start2=start2.strftime("%a %m-%d %I:%M %p")
81 description2=event2.get('description','')
82 eventLblK=tk.Label(window,text=(Start2, event2['summary'], description2),
83 bg='cyan',relief='sunken')
84 eventLblK.grid(sticky='nsew')
85
86 print(Start, event['summary'], description,"\n",
87 Start2, event2['summary'], description2,"\n")
88
89
90 window.mainloop()
91 except HttpError as error:
92 print('An error occurred: %s' % error)