{"id":24440051,"url":"https://github.com/twhughes/script_my_workout","last_synced_at":"2025-10-24T05:09:27.568Z","repository":{"id":81457584,"uuid":"254914992","full_name":"twhughes/Script_My_Workout","owner":"twhughes","description":":running: Programmable workouts from the comfort of your terminal :running:","archived":false,"fork":false,"pushed_at":"2020-04-15T21:17:51.000Z","size":386,"stargazers_count":24,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T19:11:59.318Z","etag":null,"topics":["fitness","fitness-tracker","python","workout","workout-generator"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/twhughes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-11T17:02:39.000Z","updated_at":"2024-06-15T07:24:56.000Z","dependencies_parsed_at":"2023-03-01T18:00:28.819Z","dependency_job_id":null,"html_url":"https://github.com/twhughes/Script_My_Workout","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twhughes%2FScript_My_Workout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twhughes%2FScript_My_Workout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twhughes%2FScript_My_Workout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/twhughes%2FScript_My_Workout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/twhughes","download_url":"https://codeload.github.com/twhughes/Script_My_Workout/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618281,"owners_count":21134201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fitness","fitness-tracker","python","workout","workout-generator"],"created_at":"2025-01-20T20:27:57.931Z","updated_at":"2025-10-24T05:09:22.543Z","avatar_url":"https://github.com/twhughes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Script My Workout\n\nCreate your own terminal-based workouts!\n\n![](img/word-and-jack.gif)\n\n## What is it\n\n'Script My Workout' is a framework that lets you define and run your own workout exercise programs, which run right in the terminal.\n\nEach `workout` is comprised of different `sections`, which contain a list of `exercises` and a `routine`, which is a function that runs through them in a user-defined sequence.\n\nWhen running each `section`, the program prints information to the terminal and narrates the process out loud for you to follow along with.\n\n\u003cimg src=\"img/screenshot.png\" width=\"500\"\u003e\n\n## How to install\n\nNote that this package (and the installation instructions) work with python 3 (and pip 3).  Depending on how your system is set up, you might need to replace `python` with `python3` and `pip` with `pip3` in the following to make this explicit.\n\nRun the following commands\n\n    git clone https://github.com/twhughes/Script_My_Workout.git\n    cd Script_My_Workout\n    pip install -e .\n\nYou can test if it worked by running one of the example workouts\n\n    python -m workout examples/easy.yaml\n\n## How to use\n\nThere are two ways to define workouts:\n\n### YAML file\n\nThe simplest way is to define a workout in a YAML file.\n\nFor example, the following yaml file `examples/easy.yaml` defines a simple workout:\n\n```yaml\nname: easy workout\n\nsections:\n\n  section1:\n    name: warmup\n    routine: one_min_each\n    exercises:\n      - toe touch\n      - run in place\n\n  section2:\n    name: HIT\n    routine: abab_25\n    exercises:\n      - jumping jacks\n      - burpees\n      - push ups\n      - high knees\n\n  section3:\n    name: cooldown\n    routine: one_min_each\n    exercises:\n      - hamstring stretch\n      - cobra stretch\n```\n\nAnd one can run this file with\n\n    python -m workout examples/easy.yaml\n\nThere are a few other example files in the `examples/` directory.\n\n\n### Python Script\n\nFor a bit more customization, one can also write a workout script in python.\n\nHere's an example script that defines and runs a simple workout.\n\n```python\n# import basic things you need from the package + routines and exercises\nfrom workout import workout, section\nfrom workout.exercises import warmup_exercises, hit_exercises, cooldown_exercises\nfrom workout.routines import one_min_each, abab_25\n\n# define the different `sections` of your workout with a list of exercises and a routine for running them\nwarmup   = section(name='warmup',   exercises=warmup_exercises,   routine=one_min_each)\nhit      = section(name='HIT',      exercises=hit_exercises,      routine=abab_25)\ncooldown = section(name='cooldown', exercises=cooldown_exercises, routine=one_min_each)\n\n# create a workout defined by a list of sections\nhard_workout = workout(name='easy', sections=[warmup, hit, cooldown])\n\n# run the workout\nhard_workout.run()\n```\n\nFor an example, run the script `simple_script.py`.\n\n    python examples/simple_script.py\n\n## Customizing your own workouts.\n\nWorkouts are fully customizable by editing the files in the `workout/` directory.\n\n1.  Define lists of exercises in `workout/exercises.py`, which define the categories of exercise you want to perform.\n\n2.  Make routines in `workout/routines.py`, which define how to run through your excercises.\n\n3.  Group your exercises and routines into 'sections' using `workout/sections.py`.\n\n4.  Combine sections together to form daily workouts in `workout/workouts.py`.\n\n## Features Coming soon\n\n- [x] Workout definition through YAML file.\n- [x] Progress bar display.\n- [ ] Trainers with different personalities.\n- [ ] Customizable command line interface (define workout via command line arguments)\n- [ ] More sophisticated definition of exercises (difficulty, categories, etc.)\n- [ ] Randomization of workouts (choose amount of time and difficulty -\u003e generate exercise list)\n- [ ] ASCII art for each exercise.\n\nI fully welcome contributions or ideas for new features or improvements!  Please leave an issue or pull request if you want to make any contributions.\n\n## Credit\n\nCopyright (2020) Tyler Hughes\nLogo by Nadine Gilmer @nagilmer\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwhughes%2Fscript_my_workout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftwhughes%2Fscript_my_workout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftwhughes%2Fscript_my_workout/lists"}