-
-
Save danielperna84/a02c307e123036973845e85b326cc940 to your computer and use it in GitHub Desktop.
| #! /usr/bin/env python | |
| #-*- coding: utf-8 -*- | |
| import json | |
| import httplib2 | |
| import time | |
| from datetime import datetime | |
| from datetime import timedelta | |
| from apiclient.discovery import build | |
| from oauth2client.client import OAuth2WebServerFlow | |
| # Copy your credentials from the Google Developers Console | |
| CLIENT_ID = 'XXXXXXXXXXXXXXXXXX.apps.googleusercontent.com' | |
| CLIENT_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXX' | |
| # Check https://developers.google.com/fit/rest/v1/reference/users/dataSources/datasets/get | |
| # for all available scopes | |
| OAUTH_SCOPE = 'https://www.googleapis.com/auth/fitness.activity.read' | |
| # DATA SOURCE | |
| DATA_SOURCE = "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps" | |
| # The ID is formatted like: "startTime-endTime" where startTime and endTime are | |
| # 64 bit integers (epoch time with nanoseconds). | |
| TODAY = datetime.today().date() | |
| NOW = datetime.today() | |
| START = int(time.mktime(TODAY.timetuple())*1000000000) | |
| END = int(time.mktime(NOW.timetuple())*1000000000) | |
| DATA_SET = "%s-%s" % (START, END) | |
| # Redirect URI for installed apps | |
| REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob' | |
| def retrieve_data(): | |
| """ | |
| Run through the OAuth flow and retrieve credentials. | |
| Returns a dataset (Users.dataSources.datasets): | |
| https://developers.google.com/fit/rest/v1/reference/users/dataSources/datasets | |
| """ | |
| flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI) | |
| authorize_url = flow.step1_get_authorize_url() | |
| print 'Go to the following link in your browser:' | |
| print authorize_url | |
| code = raw_input('Enter verification code: ').strip() | |
| credentials = flow.step2_exchange(code) | |
| # Create an httplib2.Http object and authorize it with our credentials | |
| http = httplib2.Http() | |
| http = credentials.authorize(http) | |
| fitness_service = build('fitness', 'v1', http=http) | |
| return fitness_service.users().dataSources(). \ | |
| datasets(). \ | |
| get(userId='me', dataSourceId=DATA_SOURCE, datasetId=DATA_SET). \ | |
| execute() | |
| def nanoseconds(nanotime): | |
| """ | |
| Convert epoch time with nanoseconds to human-readable. | |
| """ | |
| dt = datetime.fromtimestamp(nanotime // 1000000000) | |
| return dt.strftime('%Y-%m-%d %H:%M:%S') | |
| if __name__ == "__main__": | |
| # Point of entry in execution mode: | |
| dataset = retrieve_data() | |
| with open('dataset.txt', 'w') as outfile: | |
| json.dump(dataset, outfile) | |
| starts = [] | |
| ends = [] | |
| values = [] | |
| for point in dataset["point"]: | |
| if int(point["startTimeNanos"]) > START: | |
| starts.append(int(point["startTimeNanos"])) | |
| ends.append(int(point["endTimeNanos"])) | |
| values.append(point['value'][0]['intVal']) | |
| print "From: ", nanoseconds(min(starts)) | |
| print "To: ", nanoseconds(max(ends)) | |
| print "Steps: %d" % sum(values) |
Edit: I found it finally https://developers.google.com/fit/rest/v1/get-started
Edit: so now when i copy the verification code i get the following error:
Traceback (most recent call last):
File "getfit.py", line 68, in
dataset = retrieve_data()
File "getfit.py", line 46, in retrieve_data
credentials = flow.step2_exchange(code)
File "/home/msev/.virtualenvs/coding/local/lib/python2.7/site-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
return wrapped(*args, **kwargs)
File "/home/msev/.virtualenvs/coding/local/lib/python2.7/site-packages/oauth2client/client.py", line 2089, in step2_exchange
raise FlowExchangeError(error_msg)
oauth2client.client.FlowExchangeError: invalid_clientUnauthorized
what code should I put in code = raw_input('Enter verification code: ').strip()
I believe the script is referencing referencing: https://developers.google.com/fit/