Sync your workouts from Garmin to MyWhoosh
Project description
PyWhooshConnect
Whoosh your Garmin workouts!
Convert your Garmin training plans to MyWhoosh workouts in seconds. Download, convert, upload and ride.
About
PyWhooshConnect is a command-line tool that synchronizes your Garmin Connect workouts and converts
them into MyWhoosh-compatible format. It automatically fetches your scheduled workouts from Garmin
Connect, converts them to .json files, and prepares them for upload to MyWhoosh.
The tool supports multiple sports (cycling, running, cross-country skiing) and allows flexible configuration of power zones and workout parameters through YAML configuration files.
Installation
Requirements: Python 3.8+ (tested with Python 3.13)
For Users
Install directly from PyPI:
pip install pywhooshconnect
For Contributors
Clone the repository and install in development mode:
git clone https://github.com/federicopellegatta/pyWhooshConnect.git
cd pyWhooshConnect
pip install -e ".[dev]"
Note: This tool uses garminconnect library to interact with Garmin Connect API.
Usage
Run the application from the command line:
python main.py [OPTIONS]
For a complete list of available options and their descriptions, run python main.py --help.
Basic Example
python main.py --user your.email@example.com --sport cycling --from-date 2025-01-01 --to-date 2025-01-07
Authentication
You can provide your Garmin Connect credentials in three ways (in order of priority):
-
Command-line arguments:
--userand--password -
Environment variables: Create a
.envfile in the project root (see.env.examplefor reference): -
Interactive prompt: If credentials are not provided through the above methods, the application will prompt you to enter them at startup.
Configuration File
You can customize power zones and workout parameters using a YAML configuration file with the
--config-file option.
If no configuration file is specified, the tool uses the default configuration from
config/power_zones_config.yml.
Output
Workouts are saved as .json files in the directory specified by --output-dir (default:
~/downloads/).
Uploading to MyWhoosh
After downloading your workouts:
- Go to MyWhoosh Workout Builder and login in your MyWhoosh account
- Select Create New Workout
- Click Import workout
- Upload the
.jsonfile from your output directory - Click Export to MyWhoosh
Your workout will be available in the Custom Workouts section of your MyWhoosh profile.
Contributing
If you wish to contribute or you have just found any bug, please open an issue or a pull request on our GitHub repository. Thank you!
License
PyWhooshConnect is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pywhooshconnect-0.1.0.tar.gz.
File metadata
- Download URL: pywhooshconnect-0.1.0.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
917acca79332fd9f324d6eb19e6ccc289b5dd3aed840b90d4cbb45a88e2f388e
|
|
| MD5 |
4eff845bfa20b54148dbb7fa150b6e7e
|
|
| BLAKE2b-256 |
8255c487243dbdf54a3595b23a3dc30c0f6b34cda27dae517067161dbbf84a4e
|
Provenance
The following attestation bundles were made for pywhooshconnect-0.1.0.tar.gz:
Publisher:
cd.yml on federicopellegatta/pyWhooshConnect
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pywhooshconnect-0.1.0.tar.gz -
Subject digest:
917acca79332fd9f324d6eb19e6ccc289b5dd3aed840b90d4cbb45a88e2f388e - Sigstore transparency entry: 727369943
- Sigstore integration time:
-
Permalink:
federicopellegatta/pyWhooshConnect@a67462db4ad38c4381b2ff5efaf389ef7f297085 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/federicopellegatta
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@a67462db4ad38c4381b2ff5efaf389ef7f297085 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pywhooshconnect-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pywhooshconnect-0.1.0-py3-none-any.whl
- Upload date:
- Size: 33.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ebe1480f00232d842d3211e5d44d9b1230cebdf6ff8d600c14c7a7fdf0d7da7
|
|
| MD5 |
4538e83c885e356bb66290de1ef149a2
|
|
| BLAKE2b-256 |
bd3d2544e96389047b4dadb3efbad01e4b53c370b08ef6fd6fc3c1a2257e667e
|
Provenance
The following attestation bundles were made for pywhooshconnect-0.1.0-py3-none-any.whl:
Publisher:
cd.yml on federicopellegatta/pyWhooshConnect
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pywhooshconnect-0.1.0-py3-none-any.whl -
Subject digest:
2ebe1480f00232d842d3211e5d44d9b1230cebdf6ff8d600c14c7a7fdf0d7da7 - Sigstore transparency entry: 727369946
- Sigstore integration time:
-
Permalink:
federicopellegatta/pyWhooshConnect@a67462db4ad38c4381b2ff5efaf389ef7f297085 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/federicopellegatta
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@a67462db4ad38c4381b2ff5efaf389ef7f297085 -
Trigger Event:
release
-
Statement type: