|
1 | 1 | from __future__ import print_function
|
2 | 2 | import base64
|
| 3 | +import datetime |
3 | 4 | import email
|
4 | 5 | import pickle
|
5 | 6 | import re
|
|
9 | 10 | from google_auth_oauthlib.flow import InstalledAppFlow
|
10 | 11 | from google.auth.transport.requests import Request
|
11 | 12 |
|
| 13 | +from pdb import set_trace as bp |
| 14 | + |
12 | 15 | # If modifying these scopes, delete the file token.pickle.
|
13 |
| -SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'] |
| 16 | +SCOPES = ['https://www.googleapis.com/auth/gmail.readonly', |
| 17 | +'https://www.googleapis.com/auth/calendar.events'] |
14 | 18 |
|
15 | 19 | def ListMessagesMatchingQuery(service, user_id, query=''):
|
16 | 20 | """List all Messages of the user's mailbox matching the query.
|
@@ -116,10 +120,45 @@ def main():
|
116 | 120 | # Call the Gmail API
|
117 | 121 | messages = ListMessagesMatchingQuery( service, user_id='me', query='from:[email protected] subject:"Potwierdzenie rezerwacji')
|
118 | 122 |
|
119 |
| - for message in messages: |
120 |
| - msg = GetMimeMessage(service,user_id='me', msg_id = message['id']) |
121 |
| - body = get_payload_decode(msg) |
122 |
| - print((message['id'],parseZdrofit(body))) |
| 123 | + saved_events = [] |
| 124 | + if os.path.exists("events.pickle"): |
| 125 | + with open("events.pickle",'rb') as rfp: |
| 126 | + saved_events = pickle.load(rfp) |
| 127 | + |
| 128 | + messages = [message for message in messages if message['id'] not in saved_events] |
| 129 | + |
| 130 | + if messages: |
| 131 | + calendar_service = build('calendar', 'v3', credentials=creds) |
| 132 | + |
| 133 | + for message in messages: |
| 134 | + msg = GetMimeMessage(service,user_id='me', msg_id = message['id']) |
| 135 | + body = get_payload_decode(msg) |
| 136 | + event_fields = parseZdrofit(body) |
| 137 | + |
| 138 | + start_time = datetime.datetime.strptime(event_fields[1] + " " + event_fields[2] ,"%d-%m-%Y %H:%M") |
| 139 | + end_time = start_time + datetime.timedelta(minutes = 90) |
| 140 | + |
| 141 | + event = { |
| 142 | + 'summary': event_fields[0], |
| 143 | + 'start': { |
| 144 | + 'dateTime': start_time.isoformat("T"), |
| 145 | + 'timeZone': 'Europe/Warsaw', |
| 146 | + }, |
| 147 | + 'end': { |
| 148 | + 'dateTime': end_time.isoformat("T"), |
| 149 | + 'timeZone': 'Europe/Warsaw', |
| 150 | + }, |
| 151 | + 'reminders': {'useDefault': True}, |
| 152 | + } |
| 153 | + |
| 154 | + saved_events.append(message['id']) |
| 155 | + event = calendar_service. events(). insert( calendarId='[email protected]', body=event). execute() |
| 156 | + |
| 157 | + with open("events.pickle",'wb') as wfp: |
| 158 | + pickle.dump(saved_events, wfp) |
| 159 | + |
| 160 | + else: |
| 161 | + print("No new mails.") |
123 | 162 |
|
124 | 163 | if __name__ == '__main__':
|
125 | 164 | main()
|
|
0 commit comments