Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
intraday & time series allow timezones & end dates
  • Loading branch information
cleye-sherpah committed Jun 7, 2023
commit bb221d390c57840288676d27c9966e3cff187089
20 changes: 17 additions & 3 deletions fitbit/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -513,7 +513,7 @@ def water_goal(self, target=None):
return self._resource_goal('foods/log/water', data)

def time_series(self, resource, user_id=None, base_date='today',
period=None, end_date=None):
period=None, end_date=None, timezone=None):
"""
The time series is a LOT of methods, (documented at urls below) so they
don't get their own method. They all follow the same patterns, and
Expand Down Expand Up @@ -545,9 +545,14 @@ def time_series(self, resource, user_id=None, base_date='today',
base_date=self._get_date_string(base_date),
end=end
)

if timezone:
url = url + ('?timezone=%s' % timezone)

return self.make_request(url)

def intraday_time_series(self, resource, base_date='today', detail_level='1min', start_time=None, end_time=None):
def intraday_time_series(self, resource, base_date='today', detail_level='1min',
end_date=None, start_time=None, end_time=None, timezone=None):
"""
The intraday time series extends the functionality of the regular time series, but returning data at a
more granular level for a single day, defaulting to 1 minute intervals. To access this feature, one must
Expand All @@ -571,11 +576,17 @@ def intraday_time_series(self, resource, base_date='today', detail_level='1min',
"""
if not detail_level in ['1sec', '1min', '15min']:
raise ValueError("Period must be either '1sec', '1min', or '15min'")

if end_date:
end = self._get_date_string(end_date)
else:
end = '1d'

url = "{0}/{1}/user/-/{resource}/date/{base_date}/1d/{detail_level}".format(
url = "{0}/{1}/user/-/{resource}/date/{base_date}/{end}/{detail_level}".format(
*self._get_common_args(),
resource=resource,
base_date=self._get_date_string(base_date),
end=end,
detail_level=detail_level
)

Expand All @@ -589,6 +600,9 @@ def intraday_time_series(self, resource, base_date='today', detail_level='1min',

url = url + '.json'

if timezone:
url = url + ('?timezone=%s' % timezone)

return self.make_request(url)

def activity_stats(self, user_id=None, qualifier=''):
Expand Down