Browse Source

Put the gmail event finder and the google calendar event finder together

Shendan JIN 8 years ago
parent
commit
60502edfbb
5 changed files with 171 additions and 74 deletions
  1. 16 0
      analyse_event.py
  2. 34 0
      event.py
  3. 54 30
      gcal.py
  4. 57 37
      gmail.py
  5. 10 7
      gmail_msg.py

+ 16 - 0
analyse_event.py

@@ -0,0 +1,16 @@
+from gmail import *
+from gcal import *
+
+def main():
+
+    mc = raw_input('Please enter m(for gmail) or c (for google calendar) to start the events finder: ').lower()
+    if (mc == 'm'):
+        list_event = get_list_event_gmail()
+    else:
+        list_event = get_list_event_gcal()
+  
+    for event in list_event:
+        event.affiche()
+    
+if __name__ == '__main__':
+    main()

+ 34 - 0
event.py

@@ -0,0 +1,34 @@
+from gmail import *
+
+class event:
+    def __init__(self):
+        pass
+
+class Event(event):
+    def __init__(self, date, location, subject, body, status, withwho, withwhomail):
+        self.date = date
+        self.location = location
+        self.subject = subject
+        self.body = body
+        self.status = status
+        self.withwho = withwho
+        self.withwhomail = withwhomail
+        
+    def affiche(self):
+        if self.status != "":
+            print('<Status>: %s' % self.status)
+        print('<Date>: %s' % self.date)
+        if self.withwho != "" :
+            print('<Organiser>: %s' % self.withwho)
+        print('<Organiser\'s email>: %s' % self.withwhomail)
+        
+        if self.location != "":
+            print('<Location>: %s' % self.location)
+        print('<Subject>: %s' % self.subject)
+        print('<Body>: %s' % self.body)
+        
+    def problem(self):
+        #TODO: Call the function of RATP
+        return "TODO"
+    
+

+ 54 - 30
gcal.py

@@ -6,6 +6,7 @@ from apiclient import discovery
 import oauth2client
 from oauth2client import client
 from oauth2client import tools
+from event import *
 
 import datetime
 
@@ -50,56 +51,79 @@ def get_credentials():
         print('Storing credentials to ' + credential_path)
     return credentials
 
-def main():
-    """Shows basic usage of the Google Calendar API.
 
-    Creates a Google Calendar API service object and outputs a list of the next
-    10 events on the user's calendar.
-    """
-    credentials = get_credentials()
-    http = credentials.authorize(httplib2.Http())
-    service = discovery.build('calendar', 'v3', http=http)
-
-    now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
-    print('Getting the upcoming 10 events')
-    eventsResult = service.events().list(
-        calendarId='primary', timeMin=now, maxResults=10, singleEvents=True,
-        orderBy='startTime').execute()
-    events = eventsResult.get('items', [])
 
+def find_list_event_gcal(events):
+    list_event = []
+    
     if not events:
         print('No upcoming events found.')
+        return list_event
+
+    i = 0
 
-    i=0
     for event in events:
         i = i + 1
-        print('The event #', i,'------------------------')
+        #print('The event #', i,'------------------------')
         start = event['start'].get('dateTime', event['start'].get('date'))
-        
+
         #status :  confirmed or not
-        print('  Status:', event['status'])     
+        status = event['status']
+        #print('  Status:', event['status'])     
         
         #htmlLink:  the url of the event
-        print('  HtmlLink:', event['htmlLink'])
+        #print('  HtmlLink:', event['htmlLink'])
         
         #created:   the created time of the event
-        print('  Created time:', event['created'])
+        #print('  Created time:', event['created'])
         
         #updateed:   the updated time of the event
-        print('  Updatedtime:', event['updated'])
+        #print('  Updatedtime:', event['updated'])
         
-        #summary:   the description of the event
+        body = ""
         if ('description' in event):
-            print('  Description:', event['description'])
+            body = event['description']
+            #print('  Description:', event['description'])
+       
+        subject = ""
+        if ('summary' in event):
+            subject = event['summary']
+            #print('  Sumarry:', event['summary'])
         
+        location = ""
         if ('location' in event):
-            print('  Location:', event['location'])
+            location = event['location']
+            #print('  Location:', event['location'])
+
+        #print("  Organizer's name:", event['organizer'].get('displayName', 'unknown'))
+        withwho =  event['organizer'].get('displayName', 'unknown')
 
-        print("  Organizer's name:", event['organizer'].get('displayName', 'unknown'))
-        print("  Organizer's email:", event['organizer']['email'])
+        #print("  Organizer's email:", event['organizer']['email'])
+        withwhomail =  event['organizer']['email']
 
-        print("  Start time:", event['start']['dateTime'])
+        #print("  Start time:", event['start']['dateTime'])
         #print(start, event['summary']);
 
-if __name__ == '__main__':
-    main()
+
+        list_event.append(Event(start,location,subject,body,status, withwho, withwhomail))
+        return list_event
+ 
+def get_list_event_gcal():
+    """Shows basic usage of the Google Calendar API.
+
+    Creates a Google Calendar API service object and outputs a list of the next
+    10 events on the user's calendar.
+    """
+    credentials = get_credentials()
+    http = credentials.authorize(httplib2.Http())
+    service = discovery.build('calendar', 'v3', http=http)
+
+    now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
+    print('Getting the upcoming 10 events...')
+    eventsResult = service.events().list(
+        calendarId='primary', timeMin=now, maxResults=10, singleEvents=True,
+        orderBy='startTime').execute()
+    events = eventsResult.get('items', [])
+
+    return find_list_event_gcal(events)
+

+ 57 - 37
gmail.py

@@ -8,6 +8,8 @@ import oauth2client
 from oauth2client import client
 from oauth2client import tools
 from gmail_msg import *
+from event import *
+
 try:
     import argparse
     flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
@@ -49,39 +51,8 @@ def get_credentials():
         print('Storing credentials to ' + credential_path)
     return credentials
 
-def search(service, labels):
-    while True:
-        keyword = raw_input('Please enter a keyword to start searching the related messages in the mailbox(ctrl+c for quit) : ').lower()
-
-        for i in range(3):
-            print()
-        
-        #print('Labels:')
-        for label in labels:
-            if (label['name']=='INBOX'):
-                print(label['name'])        
-                list_msg = ListMessagesMatchingQuery(service,"me", query=keyword)
-                #list_msg = ListMessagesWithLabels(service, "me", label['id'])
-                #print(list_msg)
-                i = 0
-                for msg in list_msg:
-                    i = i + 1
-                    print()
-                    print('Message #%d:'% i)
-                    print('----')
-                    msg = GetMessage(service,"me",msg['id'])
-                    get_message_header(msg)
-                    
-                    mime_msg = GetMimeMessage(service,"me",msg['id'])
-                    msg_body = get_message_body(mime_msg)
-                    print('Body:')
-                    print('%s' % msg_body)
-                  
-                    #print(GetMessage(service, "me", msg['id']))
-                    #GetMimeMessage(service,"me",msg['id'])
-        print()
-        
-def main():
+def get_list_event_gmail():
+    
     """
     Creates a Gmail API service object and outputs a list of messages which contain the keyword in the user's Gmail account.
    
@@ -92,11 +63,60 @@ def main():
     service = discovery.build('gmail', 'v1', http=http)
     results = service.users().labels().list(userId='me').execute()
     labels = results.get('labels', [])
+
+
+    list_event = []
     if not labels:
         print('No labels found.')
-    else:
-        search(service, labels)
+        return list_event
+
+
+
+    keyword = raw_input('Please enter a keyword to start searching the related messages in the mailbox(ctrl+c for quit) : ').lower()
 
-if __name__ == '__main__':
-    main()
+    for i in range(3):
+        print()
+        
+    #print('Labels:')
+    for label in labels:
+        if (label['name']=='INBOX'):
+            print(label['name'])        
+            list_msg = ListMessagesMatchingQuery(service,"me", query=keyword)
+            #list_msg = ListMessagesWithLabels(service, "me", label['id'])
+            #print(list_msg)
+            i = 0
+            for msg in list_msg:
+                i = i + 1
+                #print()
+                #print('Message #%d:'% i)
+                #print('----')
+                msg = GetMessage(service,"me",msg['id'])
+                headers = get_message_header(msg)
+                
+                withwho = withwhomail = subject = date = location = body = status = ""
+                for e in headers:
+                    if (e['name']=='From'):
+                        #print 'Receive from: %s' % e['value']
+                        withwhomail = e['value']
+                        
+                    if (e['name']=='Subject'):
+                        #print 'Subject: %s' % e['value']
+                        subject = e['value']
 
+
+                    if (e['name']=='Date'):
+                        #print 'Date: %s' % e['value']
+                        date = e['value']
+                                  
+                mime_msg = GetMimeMessage(service,"me",msg['id'])
+                body = get_message_body(mime_msg)
+                
+                
+                list_event.append(Event(date,location,subject,body,status, withwho, withwhomail))
+    return list_event
+                #print('Body:')
+                #print('%s' % msg_body)
+                  
+                #print(GetMessage(service, "me", msg['id']))
+                #GetMimeMessage(service,"me",msg['id'])
+    #print()

+ 10 - 7
gmail_msg.py

@@ -102,13 +102,16 @@ def get_message_header(message):
    
     #print 'Message snippet: %s' % message['snippet']
     headers = message['payload']['headers']
-    for e in headers:
-        if (e['name']=='From'):
-            print 'Receive from: %s' % e['value']
-        if (e['name']=='Subject'):
-            print 'Subject: %s' % e['value']
-        if (e['name']=='Date'):
-            print 'Date: %s' % e['value']
+
+    return headers
+
+    #for e in headers:
+     #   if (e['name']=='From'):
+      #      print 'Receive from: %s' % e['value']
+       # if (e['name']=='Subject'):
+        #    print 'Subject: %s' % e['value']
+        #if (e['name']=='Date'):
+         #   print 'Date: %s' % e['value']
 
 
 def GetMimeMessage(service, user_id, msg_id):