def GetAllWorkouts(workout_list, access_token):
workout_info = []
workout_num = 1
rate_limit = 100
time_interval = 900 # 15 minutes = 900 seconds
wait_time = ((len(workout_list)/100) * 900)/60
print(f'Extracting all workouts, due to the API rate limit, this will take {wait_time} minutes to run.')
for i in workout_list:
print('Extracting workout:', workout_num)
if req.status_code == 200:
req = req.json()
workout_info.append(req)
workout_num += 1
elif req.status_code == 429 and 'message' in req.json() and req.json()['message'] == 'Rate Limit Exceeded':
# If rate limit exceeded error is received, wait for 15 minutes before continuing
print('Rate limit exceeded. Waiting for 15 minutes...')
time.sleep(time_interval)
else:
print('Error occurred during API request:', req.status_code, req.json())
break
# Pause after every 100 iterations and wait for 15 minutes
if workout_num % rate_limit == 0:
print(f'Reached rate limit of {rate_limit} requests. Sleeping for {int(time_interval/60)} minutes.')
time.sleep(time_interval)
return workout_info