Workout builder

@Alex_VanLaningham and @david, just adding my support for the suggestion to be able to send slope targets (and other targets that are not just %FTP, eg %MMP) from Intervals to TrainerDay.

1 Like

Just an idea, but i think it could be useful if you see the work per interval in kJ in the workout builder !?
So you could easily make different intervals (duration, intensity) with the same workload in kJ.

I just added that. Tx.

1 Like

Is it possible to sync these workouts to zwift or training peaks?

Unfortunately not automatically.

Hey David,
Is there any way to upload/import more than one Workout file (erg/zwo/mrc/etc) at a time?
It would be great to be able to bulk import these files to use in plans!

I have started working on this. Should be done by Friday.

2 Likes

Awesome David!!!

Done:

5 Likes

Hi guys,

Is there a file format and an APP that supports HR targets workouts like if you were using your Garmin?
I can create HR based workouts using Intervals but as far I know it’s meant only for Garmin use.
I would like to run it using my desktop and/or phone and videos, charts, etc the same way we do with power.
The ones I use, Rouvy and Golden Cheetah, doesn’t support it.

tks,

ps: the reason behind is Polarized HR based training.

I was looking for an easy way to import Zwift workouts into the workout builder and could not find one – suggestions welcome;-)

As a quick solution I copied the workout description in the left sidebar of ‘What’s on Zwift’ into a file and run a Python script – please send me a personal message if you are interested in the code: Apparently “preformatted text” does not really work that well here, likely because of the quotes in the code, and I don’t see a code-block option;-)

Could something like this be build into the workout builder as a copy-n-paste importer or similar?
Or what’s the appropriate way of doing this?

Hi @david

Would you be able to add “distance” in addition to Duration under Workout Builder > Add Step ? This would be very useful for running workouts, many of them are based on distance (x * 100m, x * 400m, etc.)

Many thanks in advance!

Martial

4 Likes

You can use the “Import” button at the bottom of the dialog. You can also bulk import zwo, mrc and erg files into a folder in your training library:

@Martial_Pottier I have distance for workouts on the todo list. It has been much requested.

Hi @David , thanks for the feedback. I wasn’t clear:-o
There don’t generally seem to be zwo files available for download for the Zwift workouts… Thus, what I get is a copy-and-paste version of the web info on whatsonzwift:

10min from 40 to 70% FTP
1x 3min @ 95rpm, 80% FTP,
1min @ 65rpm, 105% FTP
1min @ 85rpm, 65% FTP
1x 3min @ 100rpm, 80% FTP,
1min @ 65rpm, 105% FTP
1min @ 85rpm, 65% FTP
1x 3min @ 70rpm, 80% FTP,
1min @ 100rpm, 105% FTP
1min @ 85rpm, 65% FTP
1x 3min @ 95rpm, 80% FTP,
1min @ 65rpm, 105% FTP
2min @ 85rpm, 65% FTP
4min @ 95rpm, 90% FTP
4min @ 85rpm, 80% FTP
4min @ 75rpm, 70% FTP
4min @ 75rpm, 90% FTP
4min @ 85rpm, 80% FTP
4min @ 95rpm, 70% FTP
12min from 90 to 60% FTP
2min @ 65rpm, 75% FTP
1min @ 65rpm, 75% FTP
2min @ 95rpm, 75% FTP
1min @ 65rpm, 75% FTP
2min @ 65rpm, 75% FTP
6x 1min @ 100rpm, 75% FTP,
1min @ 60rpm, 75% FTP
3min @ 50% FTP

I’ll post the (short) Python code that I use to convert that to an i.icu-format specification when I am home tonight, but the easiest was, obviously, if I could paste this into an i.icu dialog and get the appropriate workout specs in i.icu;-)
The “trickiest” thing is the ‘,’ at end of line as a continuation symbol;-)

Where are you cut and pasting from on whatsonzwift? I just had a look there and couldn’t find any text representation of the workout.

It’s this left “sidebar” – from this whatsonzwift page:


Btw., if you/i.icu could actually directly parse these website that would be cool;-))

1 Like

And this code will parse it into i.icu-compatible text

#!/usr/bin/env python
# -*- coding: utf-8; fill-column: 120; truncate-lines: t -*-

import re
import sys


def convert(zwift):
    icu = ""
    multiplier = False

    # expand multiplied lines
    for line in zwift:
        if re.match('^[1-9]+[xX] .*,\\s*\\Z', line):
            icu += '\n' + line[:3] + '\n'
            icu += '- ' + line[3:]
            multiplier = True
        elif re.match('^[1-9]+[xX]', line):
            icu += '\n' + line[:3] + '\n'
            icu += '- ' + line[3:]
            multiplier = False
        elif multiplier == True:
            icu += '- ' + line + '\n'
            multiplier = False
        else:
            icu += '- ' + line

    # replace words and fix grammar
    icu = icu.replace('min', 'm').replace('sec', 's') \
            .replace('from', 'ramp').replace(' to ', '-') \
            .replace('FTP', '').replace(',', '').replace('@', '').replace('\n+', '\n') + '\n'
    icu = re.sub('([0-9]+m) ([0-9]+s)', '\\1\\2', icu)

    return icu



if __name__ == '__main__':
    with open(sys.argv[1], 'rt') as zwift:
        print(convert(zwift))
3 Likes

http://cubingtest.byethost9.com/Other/CyclingCalculator.html

12 Likes

Max_Nelson : thank you !!! this literaly mades my day

Thats very cool, tx for publishing it!