diff --git a/fitbit/__init__.py b/fitbit/__init__.py index 5cdc066..017dc68 100644 --- a/fitbit/__init__.py +++ b/fitbit/__init__.py @@ -17,9 +17,9 @@ __copyright__ = 'Copyright 2012-2015 ORCAS' __license__ = 'Apache 2.0' -__version__ = '0.2.2' +__version__ = '0.2.2.1' __release__ = '0.2.2' # Module namespace. -all_tests = [] +all_tests = ['get_steps'] diff --git a/fitbit/api.py b/fitbit/api.py index 7a7a20d..01e52a3 100644 --- a/fitbit/api.py +++ b/fitbit/api.py @@ -978,3 +978,15 @@ def list_subscriptions(self, collection=''): collection='/{0}'.format(collection) if collection else '' ) return self.make_request(url) + + def get_steps(self, date): + URL = "{0}/{1}/user/-/activities/steps/date/{year}-{month}-{day}.json".format( + *self._get_common_args(), + year=date.year, + month=date.month, + day=date.day + ) + return self.make_request(url) + + + diff --git a/result.json b/result.json new file mode 100644 index 0000000..d6bba82 --- /dev/null +++ b/result.json @@ -0,0 +1,658 @@ +HTTP/1.1 200 OK +Date: Sun, + 04 Sep 2016 23:42:55 GMT +Content-Type: application/json;charset=UTF-8 +Transfer-Encoding: chunked +Connection: keep-alive +Cache-control: no-cache, + private +Fitbit-Rate-Limit-Limit: 150 +Fitbit-Rate-Limit-Remaining: 129 +Fitbit-Rate-Limit-Reset: 1025 +Content-Language: en +Vary: Accept-Encoding +X-Frame-Options: SAMEORIGIN +Server: cloudflare-nginx +CF-RAY: 2dd54cf9dff63a4e-ICN + +{ + "activities":[ + { + "activeDuration":1881000, + "activityLevel":[ + { + "minutes":12, + "name":"sedentary" + }, + { + "minutes":19, + "name":"lightly" + }, + { + "minutes":0, + "name":"fairly" + }, + { + "minutes":0, + "name":"very" + }], + "activityName":"Walk", + "activityTypeId":90013, + "averageHeartRate":77, + "calories":130, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-30/2016-08-30/1min/time/13:48/14:19.json", + "duration":1881000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-30/2016-08-30/1sec/time/13:48:31/14:19:52.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":25, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":1, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-30T05:29:43.000Z", + "logId":3861417600, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-30T13:48:31.000+09:00", + "steps":1447, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3861417600.tcx" + }, + { + "activeDuration":1510000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":4, + "name":"lightly" + }, + { + "minutes":5, + "name":"fairly" + }, + { + "minutes":16, + "name":"very" + }], + "activityName":"Walk", + "activityTypeId":90013, + "averageHeartRate":87, + "calories":173, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-29/2016-08-29/1min/time/8:21/8:46.json", + "duration":1510000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-29/2016-08-29/1sec/time/08:21:14/08:46:24.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":24, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":1, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-29T01:02:01.000Z", + "logId":3846557178, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-29T08:21:14.000+09:00", + "steps":2397, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3846557178.tcx" + }, + { + "activeDuration":1107000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":0, + "name":"lightly" + }, + { + "minutes":3, + "name":"fairly" + }, + { + "minutes":15, + "name":"very" + }], + "activityName":"Walk", + "activityTypeId":90013, + "averageHeartRate":100, + "calories":137, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-29/2016-08-29/1min/time/0:03/0:21.json", + "duration":1107000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-29/2016-08-29/1sec/time/00:03:32/00:21:59.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":4, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":14, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-28T16:34:35.000Z", + "logId":3842331525, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-29T00:03:32.000+09:00", + "steps":1885, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3842331525.tcx" + }, + { + "activeDuration":1207000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":3, + "name":"lightly" + }, + { + "minutes":7, + "name":"fairly" + }, + { + "minutes":10, + "name":"very" + }], + "activityName":"Walk", + "activityTypeId":90013, + "averageHeartRate":83, + "calories":130, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-27/2016-08-27/1min/time/19:19/19:39.json", + "duration":1207000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-27/2016-08-27/1sec/time/19:19:18/19:39:25.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":18, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":2, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-27T10:44:30.000Z", + "logId":3829233420, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-27T19:19:18.000+09:00", + "steps":1677, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3829233420.tcx" + }, + { + "activeDuration":908000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":1, + "name":"lightly" + }, + { + "minutes":5, + "name":"fairly" + }, + { + "minutes":9, + "name":"very" + }], + "activityName":"Sport", + "activityTypeId":15000, + "averageHeartRate":94, + "calories":103, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-27/2016-08-27/1min/time/3:08/3:23.json", + "duration":908000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-27/2016-08-27/1sec/time/03:08:07/03:23:15.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":10, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":5, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-27T02:20:42.000Z", + "logId":3826796087, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-27T03:08:07.000+09:00", + "steps":1230, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3826796087.tcx" + }, + { + "activeDuration":1664000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":2, + "name":"lightly" + }, + { + "minutes":4, + "name":"fairly" + }, + { + "minutes":21, + "name":"very" + }], + "activityName":"Sport", + "activityTypeId":15000, + "averageHeartRate":107, + "calories":214, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-26/2016-08-26/1min/time/22:51/23:19.json", + "duration":1664000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-26/2016-08-26/1sec/time/22:51:27/23:19:11.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":4, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":23, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":1, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-26T14:22:58.000Z", + "logId":3820001515, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-26T22:51:27.000+09:00", + "steps":2250, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3820001515.tcx" + }, + { + "activeDuration":1108000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":3, + "name":"lightly" + }, + { + "minutes":8, + "name":"fairly" + }, + { + "minutes":7, + "name":"very" + }], + "activityName":"Outdoor Bike", + "activityTypeId":1071, + "averageHeartRate":100, + "calories":126, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-26/2016-08-26/1min/time/22:30/22:48.json", + "duration":1108000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-26/2016-08-26/1sec/time/22:30:27/22:48:55.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":9, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":9, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-26T14:11:23.000Z", + "logId":3820066488, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-26T22:30:27.000+09:00", + "steps":0, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3820066488.tcx" + }, + { + "activeDuration":959000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":0, + "name":"lightly" + }, + { + "minutes":11, + "name":"fairly" + }, + { + "minutes":5, + "name":"very" + }], + "activityName":"Outdoor Bike", + "activityTypeId":1071, + "averageHeartRate":87, + "calories":105, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-26/2016-08-26/1min/time/21:23/21:39.json", + "duration":959000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-26/2016-08-26/1sec/time/21:23:53/21:39:52.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":14, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":2, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-26T12:46:05.000Z", + "logId":3819332994, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-26T21:23:53.000+09:00", + "steps":0, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3819332994.tcx" + }, + { + "activeDuration":1058000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":2, + "name":"lightly" + }, + { + "minutes":11, + "name":"fairly" + }, + { + "minutes":5, + "name":"very" + }], + "activityName":"Walk", + "activityTypeId":90013, + "averageHeartRate":82, + "calories":119, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-26/2016-08-26/1min/time/12:09/12:27.json", + "duration":1058000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-26/2016-08-26/1sec/time/12:09:33/12:27:11.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":17, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":1, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-26T03:44:33.000Z", + "logId":3816713344, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-26T12:09:33.000+09:00", + "steps":1560, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3816713344.tcx" + }, + { + "activeDuration":1764000, + "activityLevel":[ + { + "minutes":0, + "name":"sedentary" + }, + { + "minutes":1, + "name":"lightly" + }, + { + "minutes":7, + "name":"fairly" + }, + { + "minutes":21, + "name":"very" + }], + "activityName":"Walk", + "activityTypeId":90013, + "averageHeartRate":95, + "calories":204, + "caloriesLink":"https://api.fitbit.com/1/user/-/activities/calories/date/2016-08-24/2016-08-24/1min/time/22:00/22:29.json", + "duration":1764000, + "heartRateLink":"https://api.fitbit.com/1/user/-/activities/heart/date/2016-08-24/2016-08-24/1sec/time/22:00:05/22:29:29.json", + "heartRateZones":[ + { + "max":97, + "min":30, + "minutes":15, + "name":"Out of Range" + }, + { + "max":136, + "min":97, + "minutes":14, + "name":"Fat Burn" + }, + { + "max":165, + "min":136, + "minutes":0, + "name":"Cardio" + }, + { + "max":220, + "min":165, + "minutes":0, + "name":"Peak" + }], + "lastModified":"2016-08-24T14:04:58.000Z", + "logId":3793186688, + "logType":"auto_detected", + "manualValuesSpecified":{ + "calories":false, + "distance":false, + "steps":false + }, + "startTime":"2016-08-24T22:00:05.000+09:00", + "steps":2615, + "tcxLink":"https://api.fitbit.com/1/user/-/activities/3793186688.tcx" + }], +"pagination":{ + "beforeDate":"2016-08-31", + "limit":10, + "next":"https://api.fitbit.com/1/user/-/activities/list.json?offset=10&limit=10&sort=desc&beforeDate=2016-08-31", + "offset":0, + "previous":"", + "sort":"desc" +} +} \ No newline at end of file diff --git a/test.py b/test.py new file mode 100644 index 0000000..aefc5c8 --- /dev/null +++ b/test.py @@ -0,0 +1,7 @@ +# -*- coding: UTF-8 -*- +import fitbit +import datetime + +authd_client = fitbit.Fitbit('227SSP', '1b9a2c0936c02a7ad380db6885fcb4b1', access_token='eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI0VjdXNVkiLCJhdWQiOiIyMjdTU1AiLCJpc3MiOiJGaXRiaXQiLCJ0eXAiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZXMiOiJyc29jIHJzZXQgcmFjdCBybG9jIHJ3ZWkgcmhyIHJudXQgcnBybyByc2xlIiwiZXhwIjoxNDczMDQ5NjMwLCJpYXQiOjE0NzMwMjA4MzB9.E8iikajEMmgfXFDFFUgH1CXk1c6WOgvmNbteFmsKDZw', refresh_token='2523e4e4a5873ee87a48db44ebdf702a0827ce999108bae7f92d47c228f839c9') +result = authd_client.intraday_time_series('activities/steps', start_time='00:00', end_time='00:30') +print result \ No newline at end of file