Skip to content

Commit 8ccb875

Browse files
committed
it's really working, parse zdrofit mails, creates events'
1 parent e1e4572 commit 8ccb875

File tree

1 file changed

+44
-5
lines changed

1 file changed

+44
-5
lines changed

email-bot.py

+44-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import print_function
22
import base64
3+
import datetime
34
import email
45
import pickle
56
import re
@@ -9,8 +10,11 @@
910
from google_auth_oauthlib.flow import InstalledAppFlow
1011
from google.auth.transport.requests import Request
1112

13+
from pdb import set_trace as bp
14+
1215
# 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']
1418

1519
def ListMessagesMatchingQuery(service, user_id, query=''):
1620
"""List all Messages of the user's mailbox matching the query.
@@ -116,10 +120,45 @@ def main():
116120
# Call the Gmail API
117121
messages = ListMessagesMatchingQuery(service,user_id='me',query='from:[email protected] subject:"Potwierdzenie rezerwacji')
118122

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.")
123162

124163
if __name__ == '__main__':
125164
main()

0 commit comments

Comments
 (0)