Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import requests
- import sys
- access_token = ''
- headers = {'Authorization' : 'Bearer ' + access_token}
- def build_api_url(resource, param=None):
- api_root = 'https://www.strava.com/api/v3'
- if param is not None:
- resource = resource.format(param)
- return api_root + resource
- def callApi(resource, path_param, query_params={}):
- url = build_api_url(resource, path_param)
- r = requests.get(url, headers=headers, params=query_params)
- if r.status_code != 200:
- print(r.json())
- sys.exit()
- return r.json()
- def get_athlete_name():
- athlete = callApi('/athlete', None)
- return athlete['firstname'] + ' ' + athlete['lastname'][:1] + '.'
- def get_athlete_activities():
- all_activities = set()
- page = 1
- while True:
- activities = callApi('/athlete/activities', None, {'page' : page})
- if len(activities) == 0:
- break
- for activity in activities:
- all_activities.add(activity['id'])
- page += 1
- return all_activities
- def get_activity_by_id(id):
- activity = callApi('/activities/{}', id, {'include_all_efforts' : 'True'})
- return activity
- def get_ids_of_segments_in_activity(id):
- segments = set()
- activity = get_activity_by_id(id)
- upper_limit = activity['achievement_count']
- if upper_limit == 0:
- return segments
- for effort in activity['segment_efforts']:
- if upper_limit == 0:
- break
- if effort['kom_rank'] is not None:
- segments.add(effort['segment']['id'])
- upper_limit -= 1
- return segments
- def get_leaderboard_by_segment_id(id):
- return callApi('/segments/{}/leaderboard', id)
- unique_segments = set()
- activities = get_athlete_activities()
- for activity in activities:
- segments = get_ids_of_segments_in_activity(activity)
- unique_segments |= segments
- athlete_name = get_athlete_name()
- for segment in unique_segments:
- leaderboard = get_leaderboard_by_segment_id(segment)
- for entry in leaderboard['entries']:
- if entry['athlete_name'] == athlete_name:
- if entry['rank'] <= 10:
- print(segment, entry['rank'])
- break
Advertisement
Add Comment
Please, Sign In to add comment