This is a simple Strava client written in Python. I found Strava's Python API to be difficult to use, so I wrote this wrapper that uses requests
to expose all GET
requests that are available in Strava's API documentation.
You have to manually follow the tutorial listed below to retrieve a client_id
and a client_secret
. This has to be done only once. Afterwards, strava_connector
exposes convenient wrappers.
pip install strava_connector
or
poetry add strava_connector
For the following example to work, you need to follow the Authentication workflow below.
Here's an example that shows how to retrieve a user's recent activities.
This is a wrapper around getLoggedInAthleteActivities
.
from strava_connector.connector import Connector
connector = Connector(".tokens_client.json",".tokens_strava.json")
res = connector.getLoggedInAthleteActivities(page=1, per_page=3)
Run the following steps.
You have to first execute the first step (Create your App/API Connection) presented in this amazing tutorial by Benji Knights Johnson.
As a result, you will have received your client_id
and your client_secret
.
We need to run an initial authentication.
Run the following code interactively in a python shell and replace the fake client_id
and client_secret
with the ones obtained in the previous step.
from strava_connector import initial_auth
client_id = "8xxxxxxxxxx1"
client_secret = "axxxxxxxxxxxxxxxxxxxxxxxxxc"
initial_auth(client_id, client_secret)
This will prompt you to click on a link and the dialogue will look something like this:
Click on the following authentication url.
You will be redirected and have to click 'Authorize'.
This redirects to a domain that does not resolve.
Click here. # On MacOs, you can do option+left mouse on this link.
Paste the full url in here.
http://localhost/exchange_token?state=&code=2xxxxxxxxxxxxx // redacted
{'client_secret': 'axxxxxxxxxxxxxxxxxxxxxxxxxc', 'client_id': '8xxxxxxxxxx1'}
{
'token_type': 'Bearer',
'expires_at': 1714407867,
'expires_in': 20187,
'refresh_token': '7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb',
'access_token': '6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa',
'athlete': { // redacted }
}
This creates the two required files, .tokens_client.json
and .tokens_strava.json
.
I heavily used Github's Copilot as an advanced autocomplete
for the creation of the get_...
methods and for writing the test_get_...
methods.
- Strava authentication tutorial by Benji Knights Johnson
- This package was created with
cookiecutter
andthomascamminady/cookiecutter-pypackage
, a fork ofaudreyr/cookiecutter-pypackage
. - Documentation via pdoc