Exports workout data (strength training sets/reps/weight, cardio, etc.) from Technogym mywellness.com for a configurable date range and outputs raw JSON. Use when the user asks for Technogym data, mywellness workouts, gym training history, strength training logs, or wants to retrieve exercise data from mywellness.com.
Export workout data from the Technogym mywellness.com web portal.
uv installed.env file in the workspace root with:
MYWELLNESS_EMAIL=<email>
MYWELLNESS_PASSWORD=<password>
uv sync in the workspace rootcd <workspace_root>
uv sync
Run the CLI via uv run python -m gymextract with these options:
| Option | Default | Description |
|---|
--from YYYY-MM-DD | 30 days ago | Start of date range |
--to YYYY-MM-DD | today | End of date range |
--output PATH / -o PATH | - (stdout) | - for JSON to stdout, or a directory path for per-session files |
--no-details | off | Skip per-exercise detail (sets/reps/weight). Much faster. |
--env-file PATH | .env | Path to credentials file |
Examples:
# Fetch last 30 days with full detail to stdout
uv run python -m gymextract
# Fetch a specific month, save to files
uv run python -m gymextract --from 2026-02-01 --to 2026-02-28 --output data/
# Quick session list without set/rep/weight detail
uv run python -m gymextract --from 2026-01-01 --to 2026-03-04 --no-details
The JSON output contains an array of workout sessions. Each session has:
session_id, date (YYYYMMDD), name, total_movesexercises[] — each exercise includes:
name — exercise name (e.g. "Drücken", "Beinpresse")machine — equipment (e.g. "Chest Press Biostrength")duration, calories, movesresistance_type — "Isotonisch" for strength, empty for cardiocompliance — adherence to prescribed workouttotal_weight_kg — total volume for that exercisesets[] — per-set breakdown:
set_number, reps_target, reps_actualweight_kg_target, weight_kg_actualcompliance_target, compliance_actualfrom datetime import date
from gymextract.client import MywellnessClient
with MywellnessClient(email, password) as client:
client.login()
sessions = client.fetch_all(date(2026, 2, 1), date(2026, 3, 4))
--no-details): ~2s per month of data. Use this for quick overviews..env. The mywellness.com password is case-sensitive.