|
|
from gapi.api import APIimport datetimeimport argparseimport tzlocalfrom oauth2client import toolsflags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()APPLICATION_NAME = 'Google Calendar API Python'
def dateTime(datetime): if not datetime.tzinfo: datetime = datetime.astimezone() zone = tzlocal.get_localzone().zone datetime = datetime.isoformat(timespec='seconds') return { "timeZone":zone, "dateTime":datetime, }
#~~BODY EXAMPLE~~## {'attendees': [{'email': 'lpage@example.com'},# {'email': 'sbrin@example.com'}],# 'description': "A chance to hear more about Google's developer products.",# 'end': {'dateTime': '2015-05-28T17:00:00-07:00',# 'timeZone': 'America/Los_Angeles'},# 'location': '800 Howard St., San Francisco, CA 94103',# 'recurrence': ['RRULE:FREQ=DAILY;COUNT=2'],# 'reminders': {'overrides': [{'method': 'email', 'minutes': 1440},# {'method': 'popup', 'minutes': 10}],# 'useDefault': False},# 'start': {'dateTime': '2015-05-28T09:00:00-07:00',# 'timeZone': 'America/Los_Angeles'},# 'summary': 'Google I/O 2015'}
class calendar_api(API): def __init__( self, app_name, client_secret_file, credentials_dir, scopes = 'https://www.googleapis.com/auth/calendar', version = 'v3', ): super().__init__('calendar',scopes,app_name,client_secret_file,credentials_dir,version)
self.calendars=self.get_calendars() self.ids = dict((calendar['summary'].lower(),calendar['id']) for calendar in self.calendars)
def create_event(self, calendar_id, body):
try: calendar_id = self.ids[calendar_id] except KeyError: pass service = self.service event = service.events().insert(calendarId=calendar_id, body=body).execute() return event['id']
def update_event(self,calendar_id, event_id, body): try: calendar_id = self.ids[calendar_id] except KeyError: pass
service = self.service try: event = service.events().get(calendarId=calendar_id, eventId=event_id).execute() except HttpError as e: if e.resp.status==404: return self.create_event(calendar_id, body)
updated_event = service.events().update(calendarId=calendar_id, eventId=event['id'], body=body).execute() return updated_event["id"]
def get_calendars(self): page_token = None cl = [] first = True while page_token or first: first = False calendar_list = self.service.calendarList().list(pageToken=page_token).execute() cl += list(calendar_list_entry for calendar_list_entry in calendar_list['items']) page_token = calendar_list.get('nextPageToken') return cl
def get_events(self,id): service = self.service try: id = self.ids[id] except KeyError: pass page_token = None ret = [] while True: events = service.events().list(calendarId=id, pageToken=page_token).execute() ret += events['items'] page_token = events.get('nextPageToken') if not page_token: break return retif __name__ == "__main__": my_api = calendar_api(APPLICATION_NAME,r'..\test\calendar\client_secret.json',r'..\test\calendar')
|