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.0.0.tar.gz (7.7 kB view hashes)

Uploaded Source

Built Distribution

zwog-1.0.0-py3-none-any.whl (7.8 kB view hashes)

Uploaded Python 3

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