0xHiteshPatel / peloton-to-garmin

Convert workout data from Peloton into a TCX file that can be uploaded to Garmin

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

peloton-to-garmin

#PelotonToGarmin

Convert workout data from Peloton into a TCX file that can be uploaded to Garmin.

  • Fetch latest workouts from Peloton
  • Convert Peloton workout to TCX file
  • Upload TCX workout to Garmin
  • Maintain Upload History to avoid duplicates in Garmin

Table of Contents

  1. Windows Usage
  2. Linux/MacOs Usage
  3. Docker
  4. Configuration
  5. Database
  6. Use At Own Risk

Buy Me A Coffee

Windows Setup

Quick Start

  1. Find the latest release here
  2. Download the file peloton-to-garmin-windows.zip
  3. Unzip the folder
  4. Find the file named config.ini, open it with your text editor of choice and modify the Peloton/Garmin settings
  5. Save and close the file
  6. Find the file named peloton-to-garmin.exe, double click to launch the program
  7. You will be prompted to enter how many workouts you would like to fetch
  8. A TCX file for each workout will be created in the Output directory
  9. The resulting TCX file can then be uploaded to Garmin manually, or you can configure the config.ini settings to upload automagically for you

Advanced Setup

  1. Download the repo here
  2. Extract the zip file
  3. Install the latest version of Python 3
  4. Open File Explorer and navigate to the wherever you unzipped the downloaded project
  5. Navigate so that you are inside the peloton-to-garmin folder
  6. Open a command prompt by clicking in the Location Bar at the top and typing cmd then hit enter
  7. From the command prompt run the following command:
    1. pip install -r requirements.txt
  8. Close the command prompt and return to the peloton-to-garmin folder
  9. Edit the config.ini file and set your Peloton Email and Password, Save and Close
    1. Optionally set your Garmin Email and Password if you wish for activities to be uploaded automatically

Advanced Usage

  • Open a command prompt inside of the peloton-to-garmin folder
  • Run the following command:
    • python peloton-to-garmin
  • You will be prompted to enter how many workouts you would like to fetch
  • A TCX file for each workout will be created in the output directory
  • The resulting TCX file can then be uploaded to Garmin

Linux/MacOs

  1. wget https://github.com/philosowaffle/peloton-to-garmin/archive/master.zip
  2. unzip master.zip
  3. Install Python 3
  4. Navigate so that you are inside the peloton-to-garmin folder
  5. From the command prompt run the following command:
    1. pip install -r requirements.txt
    2. In ubuntu 20.04, if you use the python3 in the repo, the command is pip3 install -r requirements.txt
  6. vim config.ini (or nano or whatever. Just not emacs, please :P)
    1. set your Peloton Email and Password, Save and Close

Usage

  • Open a command prompt inside of the peloton-to-garmin folder
  • Run the following command:
    • python3 peloton-to-garmin.py
  • You will be prompted to enter how many workouts you would like to fetch
  • A TCX file for each workout will be created in the output directory
  • The resulting TCX file can then be uploaded to Garmin

Docker

The image can be pulled from Docker Hub or Github Packages. See the Configuration section for a list of all environment variables that can be provided to the container. A sample docker-compose file can be found here.

  • docker pull philosowaffle/peloton-to-garmin

Configuration

There are multiple ways to configure values, the precedence order is:

  1. Environment Variable
  2. Command Line Arg
  3. config.ini value
Config.ini Command Line Env Var Description
[PELOTON] Email -email EMAIL P2G_PELOTON_EMAIL Peloton email address
[PELOTON] Password -password PASWORD P2G_PELOTON_PASS Peloton password
[PELOTON] NumActivities -num # P2G_NUM Batch size of activities to grab at one time
[GARMIN] UploadEnabled -garmin_enable_upload true/false P2G_GARMIN_ENABLE_UPLOAD Automatically upload to Garmin Connect
[GARMIN] Email -garmin_email EMAIL P2G_GARMIN_EMAIL Garmin Email
[GARMIN] Password -garmin_password PASSWORD P2G_GARMIN_PASS Garmin Password
[PTOG] EnablePolling -enable_polling true/false PTG_ENABLE_POLLING Automatically and periodically check for new activities
[PTOG] PollingIntervalSeconds -polling_interval_seconds # PTG_POLLING_INTERVAL_SECONDS How frequently to poll for new activities if pollingis enabled.
[OUTPUT] Directory -path PATH P2G_PATH Path to output directory, this is where the TCX files are written
[DEBUG] PauseOnFinish -pause_on_finish true/false P2G_PAUSE_ON_FINISH Do not automatically close the application on completion.
[LOGGER] LogFile -log P2G_LOG Log file path
[LOGGER] LogLevel -loglevel P2G_LOG_LEVEL DEBUG, INFO, ERROR

Command Line Arguments

Usage:

peloton-to-garmin.py [-h] [-email EMAIL] [-password PASSWORD] [-path OUTPUT_DIR] [-num NUM_TO_DOWNLOAD] [-log LOG_FILE]

Examples:

  • To get the last 10 activities:
    * peloton-to-garmin.py -num 10
  • To pass your email and passowrd:
    * peloton-to-garmin.py -email you@email.com -password mypassword

Supported Python/OS

The matrix of supported Python versions and OS's can be found here.

Database

Various config and upload history is maintained in a local database.json file. Deleting this file will delete any upload history and the servic will attempt to upload all workouts to Garmin Connect again.

Contributors

Special thanks to all the contributors who have helped improve this project!

Garmin Upload feature is provided by the library: https://github.com/La0/garmin-uploader

Warnings

⚠️ WARNING!!! Your username and password for Peloton and Garmin Connect are stored in clear text, WHICH IS NOT SECURE. If you have concerns about storing your credentials in an unsecure file, do not use this option.

About

Convert workout data from Peloton into a TCX file that can be uploaded to Garmin

License:GNU General Public License v3.0


Languages

Language:Python 99.3%Language:Dockerfile 0.7%