Skip to main content

Simple Strava client written in Python

Project description

Strava Connector

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.

Installation

pip install strava_connector

or

poetry add strava_connector

How to use

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)

Authentication workflow

Run the following steps.

Step 1

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.

Step 2

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.

AI warning

I heavily used Github's Copilot as an advanced autocomplete for the creation of the get_... methods and for writing the test_get_... methods.

Credits

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

strava_connector-0.2.1.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

strava_connector-0.2.1-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file strava_connector-0.2.1.tar.gz.

File metadata

  • Download URL: strava_connector-0.2.1.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.11 Darwin/23.4.0

File hashes

Hashes for strava_connector-0.2.1.tar.gz
Algorithm Hash digest
SHA256 e1f38f105080a2a900aabd93cd3a12d284a4aef1b932606227c68b6d2f74b7fa
MD5 9405f0df4ef991ae3133f680403d43ac
BLAKE2b-256 2cdb97f6349ab63063a6bf9421d3a8108fde455328592c57c905ea3d5233ba61

See more details on using hashes here.

File details

Details for the file strava_connector-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for strava_connector-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 09b7f3a503e5ad82c95c2c97c0b1bdc259ce50045d901178d2b3fdcebaba40a5
MD5 47ffaa330cbedf322eb45828bed82272
BLAKE2b-256 6420f4a3663c5199f6e9297a4a98ea780a1917615b9cf588c183e4e219c62e65

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page