-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathget_fitbit_data.py
More file actions
60 lines (48 loc) · 2.13 KB
/
Copy pathget_fitbit_data.py
File metadata and controls
60 lines (48 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import configparser
import datetime
import time
import sys
import os
from python_pymongodb_connector.database_connector import DatabaseConnector, DatabaseConfigurator
from bson.json_util import dumps, loads
from sender import EmailSender
from fitbit_client import AuthorizedFitbitClient, ApiClient
# Initialize
database_context = DatabaseConnector(DatabaseConfigurator('config.ini').Config())
database = database_context.connect()
parser=configparser.ConfigParser()
parser.read('config.ini')
CLIENT_ID=parser.get('Login Parameters', 'CLIENT_ID')
CLIENT_SECRET=parser.get('Login Parameters', 'CLIENT_SECRET')
TOKEN_USER_NAME=parser.get('User', 'TOKEN_USER_NAME')
DEVICE_ID=parser.get('User', 'DEVICE_ID')
client = AuthorizedFitbitClient(database)
authorized_client = client.get_authorized_client(user_name=TOKEN_USER_NAME, client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
api_client = ApiClient(authorized_client, database, logging_enabled=True)
def send_email_update(database, device_id, override_check = False):
sender = EmailSender()
sender.analyse(database, device_id=device_id, override_check=override_check)
# Main
api_client.devices()
last_sync_time_result = api_client.last_synced(DEVICE_ID)
current_date = datetime.date.today()
yester_date = datetime.date.today() - datetime.timedelta(days=1)
api_client.save_sleep(current_date.isoformat())
if (last_sync_time_result != None and datetime.date.fromisoformat(last_sync_time_result['lastSyncTime'][0:10]) > yester_date ):
api_client.save_heart(yester_date.isoformat())
api_client.save_steps(yester_date.isoformat())
api_client.save_distance(yester_date.isoformat())
send_email_update(database, device_id=DEVICE_ID, override_check = False)
api_client.print_rate_limits()
# Debug: send True as argument to force send email update
if (len(sys.argv) > 1):
try:
override_check = bool(sys.argv[1])
send_email_update(database, device_id=DEVICE_ID, override_check = override_check)
except (ValueError):
print('Could not understand argument provided.')
# Teardown
del api_client
database_context.disconnect()
sys.exit()
os._exit(1)