#!/usr/bin/env python3

from __future__ import print_function
import datetime
import os.path

import tkinter as tk

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

SCOPES=['https://www.googleapis.com/auth/calendar.readonly']

def main():

    """Shows basic usage of the Google Calendar API.
    Prints the start and name of the next 10 events on the user's calendar
    """
    creds=None
    if os.path.exists('token.json'):
        creds=Credentials.from_authorized_user_file('token.json', SCOPES)
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow=InstalledAppFlow.from_client_secrets_file(
                'credentials-sheets.json',SCOPES)
            creds=flow.run_local_server(port=0)
        with open('token.json','w') as token:
            token.write(creds.to_json())
    try:
        service=build('calendar','v3',credentials=creds)

        # Call the Calendar API
        now=datetime.datetime.utcnow().isoformat()+'Z'
        print('Getting the upcoming 10 events')
        events_result=service.events().list(calendarId='primary',
            timeMin=now,maxResults=10,singleEvents=True,
            orderBy='startTime').execute()
        events=events_result.get('items',[])

        if not events:
            print('No upcoming events found.')
            return

        for event in events:
            start=event['start'].get('dateTime',event['start'].get('date'))
            description=event.get('description','')
            print(start, event['summary'], description)

    except HttpError as error:
        print('An error occurred: %s' % error)

if __name__=='__main__':
    main()