summaryrefslogtreecommitdiffstats
path: root/ampel/google-muell.py
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2018-02-04 19:48:18 +0100
committermakefu <github@syntax-fehler.de>2018-02-04 19:48:18 +0100
commit1f8c3ae133fea3be572d041beaed9a03b2160eac (patch)
treeae40a6ee8852ade4dc6f8db28982af5b5faf2b12 /ampel/google-muell.py
parent531741bd149ececdad8aebb443d26555167840bd (diff)
make google-muell usable
Diffstat (limited to 'ampel/google-muell.py')
-rwxr-xr-xampel/google-muell.py111
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()