Skip to main content

Zwift workout generator

Project description

Zwift workout generator

Have you ever been frustrated by any WYSIWYG workout editor, such as the Zwift Workout editor and the TrainingPeaks Workout Builder?

ZWOG makes it easier to generate structured workouts using a syntax similar to the one used on What's on Zwift?.

Installation

PyPI

Install the latest stable version from PyPI

$ pip install zwog

GitHub

Install the version from the main branch

$ pip install git+https://github.com/tare/zwog.git

Syntax

The basic building blocks are ramp intervals

10min from 30 to 60% FTP

and steady state intervals

2hrs 10min @ 60% FTP

Interval durations can be given in seconds (sec,s), minutes (min,m), and hours (hrs,h).

Moreover, it is possible to create repeated intervals

4x 5min @ 95% FTP, 5min @ 85% FTP

Finally, a complete workout can be defined as follows

10min from 40 to 85% FTP
3x 5min @ 95% FTP, 5min @ 86% FTP
5min @ 50% FTP
3x 5min @ 95% FTP, 5min @ 86% FTP
10min from 75 to 55% FTP

The parser is rather robust when it comes to newlines and other whitespaces.

Usage

You can use the command line application

$ zwog --help
usage: zwog [-h] -i INPUT_FILE [-o OUTPUT_FILE] [-a AUTHOR] [-n NAME]
            [-c CATEGORY] [-s SUBCATEGORY] [-v]

Zwift workout generator

optional arguments:
  -h, --help            show this help message and exit
  -i INPUT_FILE, --input_file INPUT_FILE
                        input filename
  -o OUTPUT_FILE, --output_file OUTPUT_FILE
                        output filename
  -a AUTHOR, --author AUTHOR
                        author name
  -n NAME, --name NAME  workout name
  -c CATEGORY, --category CATEGORY
                        category
  -s SUBCATEGORY, --subcategory SUBCATEGORY
                        subcategory
  -v, --version         show program's version number and exit

or call it from Python

import zwog

workout_text = "15min from 10 to 50% FTP 5min from 50 to 70% FTP 2x 0.5hrs @ 100% FTP, 0.5hrs @ 50% FTP, 10min from 80 to 90% FTP 2min @ 50% FTP\n2min @ 50% FTP\n 10min @ 50% FTP, 10min @ 60% FTP 10min from 50 to 10% FTP"
workout = zwog.ZWOG(workout_text)
workout.save_zwo('workout.xml')
print(workout)
print(f"{round(workout.tss)} TSS")

Limitations

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

zwog-1.1.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zwog-1.1.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file zwog-1.1.0.tar.gz.

File metadata

  • Download URL: zwog-1.1.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.8 Darwin/24.3.0

File hashes

Hashes for zwog-1.1.0.tar.gz
Algorithm Hash digest
SHA256 67ab1f341df98213320e0c70b7951b6baf5b7427967b066e6575859e527bcea4
MD5 c6963b67afdef794b4ced95c6fad3f4b
BLAKE2b-256 f6442e598049f3a341f5ee3dac7ebd257f4c654ca7b9b7587ab71ee5d5553b8a

See more details on using hashes here.

File details

Details for the file zwog-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: zwog-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.8 Darwin/24.3.0

File hashes

Hashes for zwog-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6e36ff52e7e0403f10fa7a502d18b7a4ce89d1f6458fe5848f8a35faaf9a8339
MD5 2e4e4a0be9ff28521dd42920746f2c94
BLAKE2b-256 6daf8061a1c1258836349a97f4a68c9dd502a248252f3d2751e30d551af9af4a

See more details on using hashes here.

Supported by

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