diff options
author | makefu <github@syntax-fehler.de> | 2018-02-04 19:48:18 +0100 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2018-02-04 19:48:18 +0100 |
commit | 1f8c3ae133fea3be572d041beaed9a03b2160eac (patch) | |
tree | ae40a6ee8852ade4dc6f8db28982af5b5faf2b12 /ampel/google-muell.py | |
parent | 531741bd149ececdad8aebb443d26555167840bd (diff) |
make google-muell usable
Diffstat (limited to 'ampel/google-muell.py')
-rwxr-xr-x | ampel/google-muell.py | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/ampel/google-muell.py b/ampel/google-muell.py deleted file mode 100755 index 2089de6..0000000 --- a/ampel/google-muell.py +++ /dev/null @@ -1,111 +0,0 @@ -#! /usr/bin/env nix-shell -#! nix-shell -i python3 -p python3 python36Packages.docopt python36Packages.requests2 python36Packages.google_api_python_client python36Packages.dateutil -""" usage: google-muell [options] - - --esp=HOST esp8266 ip [Default: 192.168.1.23] - --client-secrets=FILE Path to client secrets file (from application) [Default: licht-kalender-secrets.json] - --credential-path=PATH Path to newly generated (or existing) credentials [Default: licht-creds.json] - --sleepval=SEC seconds to sleep [Default: 900] - -you can create the client-secrets by creating a new google application, create -oauth2 token and download it ( url here) - -""" -from docopt import docopt -from ampel.fade import calc_chain -import time -from time import sleep -import json -import sys -from datetime import datetime, timedelta -import requests - -import httplib2 -from dateutil.parser import parse -from apiclient import discovery -from oauth2client import client -from oauth2client import tools -from oauth2client.file import Storage -SCOPES = 'https://www.googleapis.com/auth/calendar.readonly' -APPLICATION_NAME = 'licht-kalender-client' - -colormap = { - "8": [ 128,128,128 ], # grey - "9": [ 0,0,0 ], # blue - "11": [ 0,0,0 ],# true red - "4": [ 0,0,0 ], # light red - "3": [ 0,0,0 ], # purple - } - -def get_creds(secrets_file,credential_path): - ''' - provide a cred_dir where the credentials would be stored to - ''' - import argparse - flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() - - store = Storage(credential_path) - credentials = store.get() - if not credentials or credentials.invalid: - flow = client.flow_from_clientsecrets(secrets_file, SCOPES) - flow.user_agent = APPLICATION_NAME - credentials = tools.run_flow(flow, store, flags) - print('Storing new credentials to ' + credential_path) - else: - print('Using existing valid credentials ' + credential_path) - - return credentials - -def next_date(credentials): - http = credentials.authorize(httplib2.Http()) - service = discovery.build('calendar', 'v3', http=http) - - #page_token = None - #while True: - # calendar_list = service.calendarList().list( - # pageToken=page_token).execute() - # for calendar_list_entry in calendar_list['items']: - # print("{} - {}".format(calendar_list_entry['id'],calendar_list_entry['summary'])) - # page_token = calendar_list.get('nextPageToken') - # if not page_token: - # break - - - now = datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time - print('Getting the upcoming 10 events') - eventsResult = service.events().list( - calendarId='o56ig681gla2a5vupm4vgiv7tc@group.calendar.google.com', timeMin=now, maxResults=10, singleEvents=True, - orderBy='startTime').execute() - events = eventsResult.get('items', []) - for event in events: - start = parse(event['start'].get('dateTime', event['start'].get('date'))) - if 'dateTime' in event['end']: - end = parse(event['end']['dateTime']) - else: - end = parse(event['end']['date']) + timedelta(days=1) - timedelta(seconds=1) - - if start < datetime.now() < end: - print("event is active now") - print(start,end, event) - - - pass - - -def to_payload(arr): - return {"r":arr[0],"g":arr[1],"b":arr[2]} - -def main(): - args = docopt(__doc__) - client_secrets = args['--client-secrets'] - sleepval = float(args["--sleepval"]) - esp = args["--esp"] - cred_path = args["--credential-path"] - creds = get_creds(client_secrets,cred_path) - while True: - t = next_date(creds) - requests.get("http://{}/color".format(esp),params=to_payload(t)) - sleep(sleepval) - -if __name__ == "__main__": - main() |