]> vault307.fbx.one Git - mu_code.git/blob - calendarWeek.py
early learning in mu editor
[mu_code.git] / calendarWeek.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 #import collections
7 from collections import ChainMap
8 import tkinter as tk
9 from tkinter.scrolledtext import ScrolledText
10
11 from google.auth.transport.requests import Request
12 from google.oauth2.credentials import Credentials
13 from google_auth_oauthlib.flow import InstalledAppFlow
14 from googleapiclient.discovery import build
15 from googleapiclient.errors import HttpError
16
17 SCOPES=['https://www.googleapis.com/auth/calendar.readonly']
18
19 """Shows basic usage of the Google Calendar API.
20 Prints the start and name of the next 7 days on the user's calendar
21 """
22 creds=None
23 if os.path.exists('token.json'):
24 creds=Credentials.from_authorized_user_file('token.json', SCOPES)
25 if not creds or not creds.valid:
26 if creds and creds.expired and creds.refresh_token:
27 creds.refresh(Request())
28 else:
29 flow=InstalledAppFlow.from_client_secrets_file(
30 'credentials-sheets.json',SCOPES)
31 creds=flow.run_local_server(port=0)
32 with open('token.json','w') as token:
33 token.write(creds.to_json())
34
35 try:
36 service=build('calendar','v3',credentials=creds)
37
38 # Call the Calendar API
39 now=datetime.datetime.utcnow().isoformat()+'Z' #datetime in crrct frmt
40 today=datetime.datetime.now()
41 max=(today+datetime.timedelta(days=7)).isoformat()+'Z'
42 print("Getting the week's events")
43 events_result=service.events().list(calendarId='primary',
44 timeMin=now,timeMax=max,singleEvents=True,
45 orderBy='startTime',prettyPrint=True).execute()
46 events=events_result.get('items',[]) #list of dict (event=dict)
47
48 #dont use events_result. dictionary, then list of dictionaries
49 eventsJ=([kind["summary"] for kind in events])+(([kind["start"] for kind in events]))
50 #for eventJ in eventsJ:
51 #print(events_result)
52 print(eventsJ)
53
54
55 #second calendar
56 events_result2=service.events().list(calendarId='greendaygirl0123@gmail.com',
57 timeMin=now,timeMax=max,singleEvents=True,
58 orderBy='startTime').execute()
59 events2=events_result2.get('items',[])
60
61 if not events:
62 print('No upcoming events found.')
63
64 if not events2:
65 print('No upcoming events2 found.')
66
67 for event in events:
68 start=datetime.datetime.fromisoformat(
69 event['start'].get('dateTime',event['start'].get('date')))
70 description=event.get('description','')
71
72 for event2 in events2:
73 start2=datetime.datetime.fromisoformat(
74 event2['start'].get('dateTime',event2['start'].get('date')))
75 description2=event2.get('description','')
76
77 print(start, event['summary'], description,"\n",
78 start2, event2['summary'], description2,"\n")
79
80 except HttpError as error:
81 print('An error occurred: %s' % error)
82
83 window=tk.Tk()
84 window.title("Next 7 days")
85 #window.geometry('600x400+50+50')
86 #window.columnconfigure(0, weight=1)
87 #window.columnconfigure(2, weight=3)
88 #window.rowconfigure(0, weight=1)
89 #window.rowconfigure(1, weight=5)
90 #window.rowconfigure(2, weight=5)
91
92 idLbl1=tk.Label(window, text="Calendar User", relief="sunken")
93 idLbl1.grid(column=0,row=0, sticky="nsew")
94
95 idLblJ=tk.Label(window,text="Jimmy", relief="sunken")
96 idLblJ.grid(column=0,row=1, sticky="nsew")
97
98 idLblK=tk.Label(window,text="Katie", relief="sunken")
99 idLblK.grid(column=0,row=2, sticky="nsew")
100
101 strtLbl1=tk.Label(window,text="start date/time in UTC", relief="sunken")
102 strtLbl1.grid(column=1,row=0, sticky="nsew")
103
104 strtLblJ=tk.Label(window,text=start,relief="sunken")
105 strtLblJ.grid(column=1,row=1, sticky="nsew")
106
107 strtLblK=tk.Label(window,text=start2, relief="sunken",)
108 strtLblK.grid(column=1,row=2, sticky="nsew")
109
110 sumLbl1=tk.Label(window,text="summary", relief="sunken")
111 sumLbl1.grid(column=2,row=0, sticky="nsew")
112
113 sumLblJ=tk.Label(window,text=event['summary'],relief="sunken")
114 sumLblJ.grid(column=2,row=1,sticky="nsew")
115
116 """sclTeventj=tk.scrolledtext.ScrolledText(window,height=2,width=30,wrap='word',
117 relief="sunken")
118 sclTeventj.insert(tk.INSERT,([kind["summary"] for kind in events]))
119 sclTeventj.grid(column=2,row=1,sticky="nsew")"""
120
121 """sumTxtJ=tk.Text(window,height=10,wrap="word",relief="sunken")
122 sumTxtJ.grid(column=2,row=1, sticky="nsew")
123 sumTxtJ.insert(tk.END,eventsJ)
124 sumTxtJ.configure(state='disabled')
125 scrlBrJ=tk.Scrollbar(sumTxtJ)
126 scrlBrJ.pack(side="right",fill='y')
127 sumTxtJ.config(yscrollcommand=scrlBrJ.set)
128 scrlBrJ.config(command=sumTxtJ.yview)"""
129
130 sumLblK=tk.Label(window,text=event2['summary'], relief="sunken")
131 sumLblK.grid(column=2,row=2, sticky="nsew")
132
133 dscLbl1=tk.Label(window,text="description", relief="sunken")
134 dscLbl1.grid(column=3,row=0, sticky="nsew")
135
136 dscLblJ=tk.Label(window,text=description, relief="sunken")
137 dscLblJ.grid(column=3,row=1, sticky="nsew")
138
139 dscLblK=tk.Label(window,text=description2, relief="sunken")
140 dscLblK.grid(column=3,row=2, sticky="nsew")
141
142 dateLbl1=tk.Label(window,text="WEEK", relief="sunken")
143 dateLbl1.grid(column=0,columnspan=2, row=4, sticky="nsew")
144
145 dateLblMin=tk.Label(window,text=now,relief="sunken")
146 dateLblMin.grid(column=2,row=4, sticky="nsew")
147
148 dateLblmax=tk.Label(window,text=max,relief="sunken")
149 dateLblmax.grid(column=3,row=4,stick="nsew")
150 window.mainloop()