From 0a868b40fecabd03ea37e687bfc7f013a84f1c29 Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 27 May 2022 23:42:46 -0400 Subject: [PATCH 01/28] Update exercise.py Add barbell overhead press --- globo/exercise.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/globo/exercise.py b/globo/exercise.py index 28cb22e..f4362ce 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -292,3 +292,7 @@ def __str__(self): StepUpVariations = Exercise( "Step up variations", "https://www.youtube.com/watch?v=dQqApCGd5Ss") + +BarbellOverheadPress = Exercise( + "Barbell Overhead Press", + "https://www.youtube.com/watch?v=_RlRDWO2jfg") From d1ee5ca9f22f576f4c7c0027c1243d80d63022f9 Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 27 May 2022 23:49:59 -0400 Subject: [PATCH 02/28] Update routine.py --- globo/routine.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/globo/routine.py b/globo/routine.py index 562d0d8..4850e13 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -283,3 +283,40 @@ def get_exercises(self): instructions=("Perform 10-20 reps of each exercise and go through the circuit 2-3 times. " "Rest 1-2 mins between circuits."), exercises=[exercise.AbdominalCircuit]) + +# r/Fitness beginner routines +BarbellRows = ExerciseRoutine( + name="Barbell Rows", + instructions=("Perform 3 sets of 5 reps, going 1-2 reps before failure on the last set. " + "Finish all 3 sets before moving on."), + exercises=[exercise.BarbellRows]) + +BenchPress = ExerciseRoutine( + name="Bench Press", + instructions=("Perform 3 sets of 5 reps, going 1-2 reps before failure on the last set. " + "Finish all 3 sets before moving on."), + exercises=[exercise.BarbellBenchPress]) + +Squats = ExerciseRoutine( + name="Free Squats", + instructions=("Perform 3 sets of 5 reps, going 1-2 reps before failure on the last set. " + "Finish all 3 sets before moving on."), + exercises=[exercise.FreeSquats]) + +Pullups = ExerciseRoutine( + name="Pullups / Chinups", + instructions=("Perform 3 sets of 5 reps, going 1-2 reps before failure on the last set. " + "Finish all 3 sets before moving on."), + exercises=[exercise.WeightedChinUps]) + +OverheadPress = ExerciseRoutine( + name="Overhead Barbell Press", + instructions=("Perform 3 sets of 5 reps, going 1-2 reps before failure on the last set. " + "Finish all 3 sets before moving on."), + exercises=[exercise.BarbellOverheadPress]) + +Deadlifts = ExerciseRoutine( + name="Deadlifts", + instructions=("Perform 3 sets of 5 reps, going 1-2 reps before failure on the last set. " + "Finish all 3 sets before moving on."), + exercises=[exercise.StraightBarDeadlifts]) From 3b5c1c1f112bc9d672b87f4563ca62dc325ca7ef Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 27 May 2022 23:52:58 -0400 Subject: [PATCH 03/28] Update workout.py --- globo/workout.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/globo/workout.py b/globo/workout.py index ea6359f..bea9f9b 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -65,3 +65,20 @@ def __str__(self): routine.HamstringMovement, routine.GroundBasedAbCricuit, ]) + +# r/Fitness beginner workouts +WorkoutA = Workout( + name="Workout A", + routines=[ + routine.BarbellRows, + routine.BenchPress, + routine.Squats, + ]) + +WorkoutB = Workout( + name="Workout B", + routines=[ + routine.Pullups, + routine.OverheadPress, + routone.Deadlifts, + ]) From b0c49337700fb6c466252ae505ec5e41471c3dc9 Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Sat, 28 May 2022 00:00:46 -0400 Subject: [PATCH 04/28] Update workout_program.py --- globo/workout_program.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/globo/workout_program.py b/globo/workout_program.py index 2bc91a6..d6b795f 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -1,3 +1,4 @@ +import datetime import workout MON, TUE, WED, THU, FRI, SAT, SUN = range(7) @@ -9,3 +10,14 @@ FRI: workout.RepetitionUpperBody, SAT: workout.MaxEffortLowerBody, } + +# r/Fitness beginner routine +# https://thefitness.wiki/routines/r-fitness-basic-beginner-routine/ +# Switch back and forth by week so order goes A, B, A, B, ... +WORKOUT_SWITCH = datetime.datetime.today().isocalendar()[1] + +BasicStrengthTraining = { + TUE: if WORKOUT_SWITCH workout.WorkoutA else workout.WorkoutB, + FRI: if WORKOUT_SWITCH workout.WorkoutB else workout.WorkoutA, + SUN: if WORKOUT_SWITCH workout.WorkoutA else workout.WorkoutB, +} From 0fa9680145d8b553486143c0a62615e2197607bb Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Sat, 28 May 2022 00:01:50 -0400 Subject: [PATCH 05/28] Update runner.py Update the workout to r/Fitness routine --- globo/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/globo/runner.py b/globo/runner.py index e11f02b..83de4fa 100644 --- a/globo/runner.py +++ b/globo/runner.py @@ -8,7 +8,7 @@ parser.add_argument("--app_password", type=str, help="Your gmail app password to sign into the sender account.", required=True) parser.add_argument("--recipients", type=str, help="A comma separated list of one or more recipient email addresses.", required=True) -CURRENT_WORKOUT = workout_program.WS4SB +CURRENT_WORKOUT = workout_program.BasicStrengthTraining if __name__ == "__main__": # Parse the command line arguments From 180f568ea8949ae148fdb5e1ffcda6e4a037a52f Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Sat, 28 May 2022 10:33:16 -0400 Subject: [PATCH 06/28] Update workout_program.py --- globo/workout_program.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/globo/workout_program.py b/globo/workout_program.py index d6b795f..d91d303 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -17,7 +17,7 @@ WORKOUT_SWITCH = datetime.datetime.today().isocalendar()[1] BasicStrengthTraining = { - TUE: if WORKOUT_SWITCH workout.WorkoutA else workout.WorkoutB, - FRI: if WORKOUT_SWITCH workout.WorkoutB else workout.WorkoutA, - SUN: if WORKOUT_SWITCH workout.WorkoutA else workout.WorkoutB, + TUE: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, + FRI: workout.WorkoutB if WORKOUT_SWITCH else workout.WorkoutA, + SUN: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, } From da359101db42ee0b92d0ed425ffb73099c65baba Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Sat, 28 May 2022 10:35:25 -0400 Subject: [PATCH 07/28] Update workout.py --- globo/workout.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/globo/workout.py b/globo/workout.py index bea9f9b..73286c1 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -82,3 +82,19 @@ def __str__(self): routine.OverheadPress, routone.Deadlifts, ]) + +WorkoutAWithConditioning = Workout( + name="Workout A + Conditioning", + routines=[ + routine.BarbellRows, + routine.BenchPress, + routine.Squats, + ]) + +WorkoutBWithConditioning = Workout( + name="Workout B + Conditioning", + routines=[ + routine.Pullups, + routine.OverheadPress, + routone.Deadlifts, + ]) From 1ca61e8a8806d15bdcc0a626e47da50784a3ae4b Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Sat, 28 May 2022 10:36:01 -0400 Subject: [PATCH 08/28] Update workout_program.py --- globo/workout_program.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/globo/workout_program.py b/globo/workout_program.py index d91d303..e125829 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -17,7 +17,7 @@ WORKOUT_SWITCH = datetime.datetime.today().isocalendar()[1] BasicStrengthTraining = { - TUE: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, - FRI: workout.WorkoutB if WORKOUT_SWITCH else workout.WorkoutA, + TUE: workout.WorkoutAWithConditioning if WORKOUT_SWITCH else workout.WorkoutBWithConditioning, + FRI: workout.WorkoutBWithConditioning if WORKOUT_SWITCH else workout.WorkoutAWithConditioning, SUN: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, } From 67235af39c747646e7c244b1afafc643a6fc2ebe Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Mon, 30 May 2022 22:55:49 -0400 Subject: [PATCH 09/28] Add new workouts --- globo/exercise.py | 16 ++++++++++++++++ globo/routine.py | 17 +++++++++++++++++ globo/workout.py | 13 +++++++++++-- globo/workout_program.py | 1 + 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/globo/exercise.py b/globo/exercise.py index f4362ce..b7af9db 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -296,3 +296,19 @@ def __str__(self): BarbellOverheadPress = Exercise( "Barbell Overhead Press", "https://www.youtube.com/watch?v=_RlRDWO2jfg") + +Burpees = Exercise( + "Burpees", + "https://www.youtube.com/watch?v=qLBImHhCXSw") + +Pullups = Exercise( + "Pullups", + "https://www.youtube.com/watch?v=eGo4IYlbE5g") + +BodyweightSquats = Exercise( + "Squats (bodyweight)", + "https://youtu.be/R1v152b72lo?t=64") + +AGTStretchRoutine = Exercise( + "AGT Stretch Routine (follow link)", + "https://agt.degreesofclarity.com/stretching/") diff --git a/globo/routine.py b/globo/routine.py index 4850e13..6dfdb08 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -320,3 +320,20 @@ def get_exercises(self): instructions=("Perform 3 sets of 5 reps, going 1-2 reps before failure on the last set. " "Finish all 3 sets before moving on."), exercises=[exercise.StraightBarDeadlifts]) + +NoExcusesConditioningA = ExerciseRoutine( + name="No Excuses! (Conditioning)", + instructions=("Perform each exercise one after another with no breaks for " + "4 sets. Time for set: 60, 45, 30, 15"), + exercises=[ + exercise.Burpees, + exercise.Pullups, + exercise.BodyweightSquats, + exercise.PushUpVariations, + ] +) + +AGTStretchRoutine = ExerciseRoutine( + name="Static Stretching! Follow the link for instructions.", + exercises=[exercise.AGTStretchRoutine] +) diff --git a/globo/workout.py b/globo/workout.py index 73286c1..fba0fc5 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -80,7 +80,7 @@ def __str__(self): routines=[ routine.Pullups, routine.OverheadPress, - routone.Deadlifts, + routine.Deadlifts, ]) WorkoutAWithConditioning = Workout( @@ -89,6 +89,7 @@ def __str__(self): routine.BarbellRows, routine.BenchPress, routine.Squats, + routine.NoExcusesConditioningA, ]) WorkoutBWithConditioning = Workout( @@ -96,5 +97,13 @@ def __str__(self): routines=[ routine.Pullups, routine.OverheadPress, - routone.Deadlifts, + routine.Deadlifts, + routine.NoExcusesConditioningA, ]) + +StretchWorkout = Workout( + name="Active Recovery", + routines=[ + routine.NoExcusesConditioningA, + routine.AGTStretchRoutine, + ]) \ No newline at end of file diff --git a/globo/workout_program.py b/globo/workout_program.py index e125829..5b13d29 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -19,5 +19,6 @@ BasicStrengthTraining = { TUE: workout.WorkoutAWithConditioning if WORKOUT_SWITCH else workout.WorkoutBWithConditioning, FRI: workout.WorkoutBWithConditioning if WORKOUT_SWITCH else workout.WorkoutAWithConditioning, + SAT: workout.StretchWorkout, SUN: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, } From fee14b12c523950cd17e6d0d4712296a8cc1170c Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Mon, 30 May 2022 23:46:23 -0400 Subject: [PATCH 10/28] Add option for all exercises in routine --- globo/routine.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/globo/routine.py b/globo/routine.py index 6dfdb08..cf91e06 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -10,13 +10,14 @@ class ExerciseRoutine(object): they will represent one group, or part, of a full workout. """ - def __init__(self, name, instructions, exercises): + def __init__(self, name, instructions, exercises, include_all=False): """Constructor for the ExerciseRoutine object. Args: name: `string` The name of hte routine. instructions: `string` Instructions for the routine. exercises: `list` A list of `Exercise` objects that make up the routine. + include_all: `boolean` Flag to include all exercises. """ self.name = name self.instructions = instructions @@ -33,7 +34,10 @@ def get_exercises(self): A `list` of `Exercise` objects. """ if not self.exercises_for_routine: - self.exercises_for_routine.append(random.choice(self.exercises)) + if self.include_all: + self.exercises_for_routine = self.exercises[::] + else: + self.exercises_for_routine.append(random.choice(self.exercises)) return self.exercises_for_routine @@ -324,16 +328,19 @@ def get_exercises(self): NoExcusesConditioningA = ExerciseRoutine( name="No Excuses! (Conditioning)", instructions=("Perform each exercise one after another with no breaks for " - "4 sets. Time for set: 60, 45, 30, 15"), + "4 sets. Exercise time for each set: 60, 45, 30, 15 for 10 " + "minutes total (60x4 + 45x4 + 30x4 + 15x4)."), exercises=[ exercise.Burpees, exercise.Pullups, exercise.BodyweightSquats, exercise.PushUpVariations, - ] + ], + include_all=True ) AGTStretchRoutine = ExerciseRoutine( - name="Static Stretching! Follow the link for instructions.", + name="Static Stretching!", + instructions="Follow the link for instructions.", exercises=[exercise.AGTStretchRoutine] ) From 6338dc31949478ad833472ff460f4f07152a2a9e Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Tue, 31 May 2022 16:59:56 -0400 Subject: [PATCH 11/28] Update routine.py --- globo/routine.py | 1 + 1 file changed, 1 insertion(+) diff --git a/globo/routine.py b/globo/routine.py index cf91e06..5002f59 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -22,6 +22,7 @@ def __init__(self, name, instructions, exercises, include_all=False): self.name = name self.instructions = instructions self.exercises = exercises + self.include_all = include_all self.exercises_for_routine = [] From 9f98040ac8111813dbc43477b6529c4c4d599db8 Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 17 Jun 2022 11:24:21 -0400 Subject: [PATCH 12/28] Update exercise.py --- globo/exercise.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/globo/exercise.py b/globo/exercise.py index b7af9db..a3a790c 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -312,3 +312,15 @@ def __str__(self): AGTStretchRoutine = Exercise( "AGT Stretch Routine (follow link)", "https://agt.degreesofclarity.com/stretching/") + +MountainClimbers = Exercise( + "Mountain Climbers", + "https://youtu.be/cnyTQDSE884?t=38") + +Bicycle = Exercise( + "Bicycle", + "https://www.youtube.com/watch?v=9FGilxCbdz8") + +JumpLunge = Exercise( + "Jump Lunge", + "https://www.youtube.com/watch?v=hTdcOG9muQk") From f1d453737df59b5099c2f176de6cfb9af648f2c7 Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 17 Jun 2022 11:27:05 -0400 Subject: [PATCH 13/28] Update routine.py --- globo/routine.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/globo/routine.py b/globo/routine.py index 5002f59..c2b9523 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -340,6 +340,20 @@ def get_exercises(self): include_all=True ) +NoExcusesConditioningB = ExerciseRoutine( + name="No Excuses! (Conditioning)", + instructions=("Perform each exercise one after another with no breaks for " + "4 sets. Exercise time for each set: 60, 45, 30, 15 for 10 " + "minutes total (60x4 + 45x4 + 30x4 + 15x4)."), + exercises=[ + exercise.MountainClimbers, + exercise.JumpLunge, + exercise.Bicycle, + exercise.Burpees, + ], + include_all=True +) + AGTStretchRoutine = ExerciseRoutine( name="Static Stretching!", instructions="Follow the link for instructions.", From dabe2993995756ffb111186b76f54203a4f8b9de Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 17 Jun 2022 11:27:46 -0400 Subject: [PATCH 14/28] Update workout.py --- globo/workout.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/globo/workout.py b/globo/workout.py index fba0fc5..10ebe84 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -98,7 +98,7 @@ def __str__(self): routine.Pullups, routine.OverheadPress, routine.Deadlifts, - routine.NoExcusesConditioningA, + routine.NoExcusesConditioningB, ]) StretchWorkout = Workout( @@ -106,4 +106,4 @@ def __str__(self): routines=[ routine.NoExcusesConditioningA, routine.AGTStretchRoutine, - ]) \ No newline at end of file + ]) From a1d0c21f6bc92be826b0240de3fad263249dd3fb Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 17 Jun 2022 11:30:54 -0400 Subject: [PATCH 15/28] Update workout.py --- globo/workout.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/globo/workout.py b/globo/workout.py index 10ebe84..3919785 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -101,9 +101,16 @@ def __str__(self): routine.NoExcusesConditioningB, ]) -StretchWorkout = Workout( +StretchWorkoutA = Workout( name="Active Recovery", routines=[ routine.NoExcusesConditioningA, routine.AGTStretchRoutine, ]) + +StretchWorkoutB = Workout( + name="Active Recovery", + routines=[ + routine.NoExcusesConditioningB, + routine.AGTStretchRoutine, + ]) From 6ae0f84711c30b46643f27d0276f7554828bd0d7 Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 17 Jun 2022 11:31:31 -0400 Subject: [PATCH 16/28] Update workout_program.py --- globo/workout_program.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/globo/workout_program.py b/globo/workout_program.py index 5b13d29..0cb6806 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -14,7 +14,7 @@ # r/Fitness beginner routine # https://thefitness.wiki/routines/r-fitness-basic-beginner-routine/ # Switch back and forth by week so order goes A, B, A, B, ... -WORKOUT_SWITCH = datetime.datetime.today().isocalendar()[1] +WORKOUT_SWITCH = (datetime.datetime.today().isocalendar()[1] % 2) == 0 BasicStrengthTraining = { TUE: workout.WorkoutAWithConditioning if WORKOUT_SWITCH else workout.WorkoutBWithConditioning, From d4a1c8c8ca7f12f3c7d800ecc28fcc3f747bc3a1 Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 17 Jun 2022 11:31:47 -0400 Subject: [PATCH 17/28] Update workout.py --- globo/workout.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/globo/workout.py b/globo/workout.py index 3919785..9357f07 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -101,16 +101,8 @@ def __str__(self): routine.NoExcusesConditioningB, ]) -StretchWorkoutA = Workout( +StretchWorkout = Workout( name="Active Recovery", routines=[ - routine.NoExcusesConditioningA, - routine.AGTStretchRoutine, - ]) - -StretchWorkoutB = Workout( - name="Active Recovery", - routines=[ - routine.NoExcusesConditioningB, routine.AGTStretchRoutine, ]) From da7a05fc61aa479d8d8abc08091103bdbd627dab Mon Sep 17 00:00:00 2001 From: Michael Martorella Date: Fri, 17 Jun 2022 11:34:18 -0400 Subject: [PATCH 18/28] Update runner.py --- globo/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/globo/runner.py b/globo/runner.py index 83de4fa..9327f4f 100644 --- a/globo/runner.py +++ b/globo/runner.py @@ -20,7 +20,7 @@ # See if today is a workout day if today in CURRENT_WORKOUT.keys(): workout = CURRENT_WORKOUT.get(today) - subject = f"WORKOUT: {workout.name}" + subject = f"{datetime.datetime.today().date()} WORKOUT: {workout.name}" # Handle newlines in html (yagmail v0.14.245 see https://github.com/kootenpv/yagmail/issues/116) contents = [workout.as_html().replace("\n","")] From 74abccaf8927de39059af06991af70a7692710f3 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 6 Jul 2022 22:06:12 -0400 Subject: [PATCH 19/28] Add yoga workouts and change schedule --- globo/exercise.py | 8 ++++++++ globo/routine.py | 12 ++++++++++++ globo/workout.py | 12 ++++++++++++ globo/workout_program.py | 17 +++++++++++++---- 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/globo/exercise.py b/globo/exercise.py index a3a790c..79aa16d 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -324,3 +324,11 @@ def __str__(self): JumpLunge = Exercise( "Jump Lunge", "https://www.youtube.com/watch?v=hTdcOG9muQk") + +YogaA = Exercise( + "Yoga with Adriene", + "https://www.youtube.com/watch?v=Yzm3fA2HhkQ") + +YogaB = Exercise( + "Yoga with SaraBeth", + "https://www.youtube.com/watch?v=JlG1d00qdo8") \ No newline at end of file diff --git a/globo/routine.py b/globo/routine.py index c2b9523..97af05a 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -359,3 +359,15 @@ def get_exercises(self): instructions="Follow the link for instructions.", exercises=[exercise.AGTStretchRoutine] ) + +YogaForFlexibilityA = ExerciseRoutine( + name="Yoga for Flexibility (A)", + instructions="Do this yoga!", + exercises=[exercise.YogaA] +) + +YogaForFlexibilityB = ExerciseRoutine( + name="Yoga for Flexibility (B)", + instructions="Do this yoga!", + exercises=[exercise.YogaB] +) \ No newline at end of file diff --git a/globo/workout.py b/globo/workout.py index 9357f07..dbc704b 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -106,3 +106,15 @@ def __str__(self): routines=[ routine.AGTStretchRoutine, ]) + +YogaWorkoutA = Workout( + name="Yoga - Active Recovery", + routines=[ + routine.YogaForFlexibilityA, + ]) + +YogaWorkoutB = Workout( + name="Yoga - Active Recovery", + routines=[ + routine.YogaForFlexibilityB, + ]) diff --git a/globo/workout_program.py b/globo/workout_program.py index 0cb6806..1c3f5b2 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -16,9 +16,18 @@ # Switch back and forth by week so order goes A, B, A, B, ... WORKOUT_SWITCH = (datetime.datetime.today().isocalendar()[1] % 2) == 0 +def _activeRecoverySelector(): + triSwitch = (datetime.datetime.today().isocalendar()[1] % 3) == 0 + if WORKOUT_SWITCH and triSwitch: + return workout.YogaWorkoutA + elif triSwitch: + return workout.YogaWorkoutB + else: + return workout.StretchWorkout + BasicStrengthTraining = { - TUE: workout.WorkoutAWithConditioning if WORKOUT_SWITCH else workout.WorkoutBWithConditioning, - FRI: workout.WorkoutBWithConditioning if WORKOUT_SWITCH else workout.WorkoutAWithConditioning, - SAT: workout.StretchWorkout, - SUN: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, + MON: workout.WorkoutAWithConditioning if WORKOUT_SWITCH else workout.WorkoutBWithConditioning, + WED: workout.WorkoutBWithConditioning if WORKOUT_SWITCH else workout.WorkoutAWithConditioning, + THU: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, + FRI: _activeRecoverySelector(), } From 50d1f0a2fe4de3181d8fd92ffbad7ed8a3130e9e Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 25 Jul 2022 17:29:56 -0400 Subject: [PATCH 20/28] Update schedule --- globo/workout.py | 12 ++++++++++++ globo/workout_program.py | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/globo/workout.py b/globo/workout.py index dbc704b..4787778 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -83,6 +83,18 @@ def __str__(self): routine.Deadlifts, ]) +ConditioningA = Workout( + name="Conditioning A", + routines=[ + routine.NoExcusesConditioningA, + ]) + +ConditioningB = Workout( + name="Conditioning B", + routines=[ + routine.NoExcusesConditioningB, + ]) + WorkoutAWithConditioning = Workout( name="Workout A + Conditioning", routines=[ diff --git a/globo/workout_program.py b/globo/workout_program.py index 1c3f5b2..6b92906 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -26,8 +26,9 @@ def _activeRecoverySelector(): return workout.StretchWorkout BasicStrengthTraining = { - MON: workout.WorkoutAWithConditioning if WORKOUT_SWITCH else workout.WorkoutBWithConditioning, - WED: workout.WorkoutBWithConditioning if WORKOUT_SWITCH else workout.WorkoutAWithConditioning, + MON: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, + TUE: workout.ConditioningA if WORKOUT_SWITCH else workout.ConditioningB, + WED: workout.WorkoutB if WORKOUT_SWITCH else workout.WorkoutA, THU: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, FRI: _activeRecoverySelector(), } From 727f042a47bb184366470d61224ba2d9c327b9c0 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Sep 2022 20:24:28 -0400 Subject: [PATCH 21/28] Add trek training program --- globo/exercise.py | 14 +++++++++++++- globo/routine.py | 18 +++++++++++++++++- globo/runner.py | 2 +- globo/workout.py | 5 +++++ globo/workout_program.py | 9 +++++++++ 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/globo/exercise.py b/globo/exercise.py index 79aa16d..e263076 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -331,4 +331,16 @@ def __str__(self): YogaB = Exercise( "Yoga with SaraBeth", - "https://www.youtube.com/watch?v=JlG1d00qdo8") \ No newline at end of file + "https://www.youtube.com/watch?v=JlG1d00qdo8") + +AerobicA = Exercise( + "Wighted Vest Treadmill (5-15 degree incline, 24+ lbs vest)", + "https://nolink") + +Climb = Exercise( + "Climb (bouldering at VITAL)", + "nolink") + +LowerA = Exercise("Lower A in Hevy", "nolink") +BackA = Exercise("Back A in Hevy", "nolink") +CoreA = Exercise("Core A in Hevy", "nolink") diff --git a/globo/routine.py b/globo/routine.py index 97af05a..95777d1 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -370,4 +370,20 @@ def get_exercises(self): name="Yoga for Flexibility (B)", instructions="Do this yoga!", exercises=[exercise.YogaB] -) \ No newline at end of file +) + +AerobicTrainingA = ExerciseRoutine( + name="Aerobic Training", + instructions="20-60 minutes of training. Keep HR between 135-145 for Aerobic base training.", + exercises=[exercise.AerobicA, exercise.BackA] +) + +AerobicTrainingB = ExerciseRoutine( + name="Aerobic Training", + instructions="20-60 minutes of training. Keep HR between 135-145 for Aerobic base training.", + exercises=[exercise.AerobicA, exercise.CoreA] +) + +Climb = ExerciseRoutine(name="Climb", instructions="Hit the wall baby!", exercises=[exercise.Climb]) + +TrekStrength = ExerciseRoutine(name="Trek Strength", instructions="Hit it hard.", exercises=[exercise.LowerA]) diff --git a/globo/runner.py b/globo/runner.py index 9327f4f..41a3247 100644 --- a/globo/runner.py +++ b/globo/runner.py @@ -8,7 +8,7 @@ parser.add_argument("--app_password", type=str, help="Your gmail app password to sign into the sender account.", required=True) parser.add_argument("--recipients", type=str, help="A comma separated list of one or more recipient email addresses.", required=True) -CURRENT_WORKOUT = workout_program.BasicStrengthTraining +CURRENT_WORKOUT = workout_program.TrekTraining if __name__ == "__main__": # Parse the command line arguments diff --git a/globo/workout.py b/globo/workout.py index 4787778..0affc38 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -130,3 +130,8 @@ def __str__(self): routines=[ routine.YogaForFlexibilityB, ]) + +TrekAerobicA = Workout(name="Aerobics", routines=[routine.AerobicTrainingA]) +TrekAerobicB = Workout(name="Aerobics", routines=[routine.AerobicTrainingB]) +Climb = Workout(name="Climb", routines=[routine.Climb]) +TrekStrength = Workout(name="Strength Training", routines=[routine.TrekStrength]) diff --git a/globo/workout_program.py b/globo/workout_program.py index 6b92906..e8f4dd0 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -32,3 +32,12 @@ def _activeRecoverySelector(): THU: workout.WorkoutA if WORKOUT_SWITCH else workout.WorkoutB, FRI: _activeRecoverySelector(), } + +TrekTraining = { + MON: workout.TrekAerobicA if WORKOUT_SWITCH else workout.TrekAerobicB, + TUE: workout.Climb, + THU: workout.TrekStrength, + FRI: workout.TrekAerobicB if WORKOUT_SWITCH else workout.TrekAerobicA, + SAT: workout.Climb, + SUN: _activeRecoverySelector(), +} From 466977262c3f35d68bffbfbe8a39f23d05774a25 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Sep 2022 20:30:38 -0400 Subject: [PATCH 22/28] Change workout names --- globo/workout.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/globo/workout.py b/globo/workout.py index 0affc38..fa1c61f 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -131,7 +131,7 @@ def __str__(self): routine.YogaForFlexibilityB, ]) -TrekAerobicA = Workout(name="Aerobics", routines=[routine.AerobicTrainingA]) -TrekAerobicB = Workout(name="Aerobics", routines=[routine.AerobicTrainingB]) +TrekAerobicA = Workout(name="Aerobics and Trek Back A (in Hevy)", routines=[routine.AerobicTrainingA]) +TrekAerobicB = Workout(name="Aerobics and Core A (in Hevy)", routines=[routine.AerobicTrainingB]) Climb = Workout(name="Climb", routines=[routine.Climb]) -TrekStrength = Workout(name="Strength Training", routines=[routine.TrekStrength]) +TrekStrength = Workout(name="Strength Training: Trek Lower A (in Hevy)", routines=[routine.TrekStrength]) From 779d854e454aa092bef3542af71aed53b052146d Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 19 Sep 2022 20:36:11 -0400 Subject: [PATCH 23/28] Updates to include all exercises --- globo/exercise.py | 10 ++-------- globo/routine.py | 28 ++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/globo/exercise.py b/globo/exercise.py index e263076..ea570c7 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -333,14 +333,8 @@ def __str__(self): "Yoga with SaraBeth", "https://www.youtube.com/watch?v=JlG1d00qdo8") -AerobicA = Exercise( - "Wighted Vest Treadmill (5-15 degree incline, 24+ lbs vest)", - "https://nolink") - -Climb = Exercise( - "Climb (bouldering at VITAL)", - "nolink") - +AerobicA = Exercise("Wighted Vest Treadmill (5-15 degree incline, 24+ lbs vest)", "nolink") +Climb = Exercise("Climb (bouldering at VITAL)", "nolink") LowerA = Exercise("Lower A in Hevy", "nolink") BackA = Exercise("Back A in Hevy", "nolink") CoreA = Exercise("Core A in Hevy", "nolink") diff --git a/globo/routine.py b/globo/routine.py index 95777d1..8b44381 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -374,16 +374,32 @@ def get_exercises(self): AerobicTrainingA = ExerciseRoutine( name="Aerobic Training", - instructions="20-60 minutes of training. Keep HR between 135-145 for Aerobic base training.", - exercises=[exercise.AerobicA, exercise.BackA] + instructions="20-60 minutes of training. Keep HR between 135-145 for Aerobic base training. Then do Trek Back A in Hevy.", + exercises=[ + exercise.AerobicA, + exercise.BackA + ], + include_all=True ) AerobicTrainingB = ExerciseRoutine( name="Aerobic Training", - instructions="20-60 minutes of training. Keep HR between 135-145 for Aerobic base training.", - exercises=[exercise.AerobicA, exercise.CoreA] + instructions="20-60 minutes of training. Keep HR between 135-145 for Aerobic base training. Then do Core A in Hevy.", + exercises=[ + exercise.AerobicA, + exercise.CoreA + ], + include_all=True ) -Climb = ExerciseRoutine(name="Climb", instructions="Hit the wall baby!", exercises=[exercise.Climb]) +Climb = ExerciseRoutine( + name="Climb", + instructions="Hit the wall baby!", + exercises=[exercise.Climb] +) -TrekStrength = ExerciseRoutine(name="Trek Strength", instructions="Hit it hard.", exercises=[exercise.LowerA]) +TrekStrength = ExerciseRoutine( + name="Trek Lower A in Hevy", + instructions="Hit it hard.", + exercises=[exercise.LowerA] +) From e17fd933b5918859b4d902ac223d038cc5d9f990 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 22 Sep 2022 08:10:28 -0400 Subject: [PATCH 24/28] Change order of workout --- globo/workout.py | 1 - globo/workout_program.py | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/globo/workout.py b/globo/workout.py index fa1c61f..4d12ed2 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -17,7 +17,6 @@ def as_html(self): routines_formatted = ''.join([routine.as_html() for routine in self.routines]) html = f"""

{self.name}

-

Don't forget to warm up!

    {routines_formatted}
""" diff --git a/globo/workout_program.py b/globo/workout_program.py index e8f4dd0..6461856 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -36,8 +36,8 @@ def _activeRecoverySelector(): TrekTraining = { MON: workout.TrekAerobicA if WORKOUT_SWITCH else workout.TrekAerobicB, TUE: workout.Climb, - THU: workout.TrekStrength, - FRI: workout.TrekAerobicB if WORKOUT_SWITCH else workout.TrekAerobicA, - SAT: workout.Climb, - SUN: _activeRecoverySelector(), + THU: workout.TrekAerobicB if WORKOUT_SWITCH else workout.TrekAerobicA, + FRI: workout.TrekStrength, + SAT: _activeRecoverySelector(), + SUN: workout.Climb, } From fa22480eec325f74b83217a255247c98f442d4ff Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 23 Sep 2022 15:33:21 -0400 Subject: [PATCH 25/28] add links --- globo/exercise.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/globo/exercise.py b/globo/exercise.py index ea570c7..7e9a26c 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -335,6 +335,6 @@ def __str__(self): AerobicA = Exercise("Wighted Vest Treadmill (5-15 degree incline, 24+ lbs vest)", "nolink") Climb = Exercise("Climb (bouldering at VITAL)", "nolink") -LowerA = Exercise("Lower A in Hevy", "nolink") -BackA = Exercise("Back A in Hevy", "nolink") -CoreA = Exercise("Core A in Hevy", "nolink") +LowerA = Exercise("Lower A in Hevy", "https://hevy.com/routine/elcWsErdNLX") +BackA = Exercise("Back A in Hevy", "https://hevy.com/routine/aBDMaIsTVRo") +CoreA = Exercise("Core A in Hevy", "https://hevy.com/routine/DYJ96BcOfV4") From ec0a95f43127157ab36f89c63fa9e68ffade7a16 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 1 Nov 2022 14:34:08 -0400 Subject: [PATCH 26/28] Add new 531 --- globo/runner.py | 2 +- globo/workout_program.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/globo/runner.py b/globo/runner.py index 41a3247..04956f5 100644 --- a/globo/runner.py +++ b/globo/runner.py @@ -8,7 +8,7 @@ parser.add_argument("--app_password", type=str, help="Your gmail app password to sign into the sender account.", required=True) parser.add_argument("--recipients", type=str, help="A comma separated list of one or more recipient email addresses.", required=True) -CURRENT_WORKOUT = workout_program.TrekTraining +CURRENT_WORKOUT = workout_program.FiveThreeOne if __name__ == "__main__": # Parse the command line arguments diff --git a/globo/workout_program.py b/globo/workout_program.py index 6461856..3352e5e 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -41,3 +41,10 @@ def _activeRecoverySelector(): SAT: _activeRecoverySelector(), SUN: workout.Climb, } + +# Handled via Todoist for the main schedule. +# See https://thefitness.wiki/routines/5-3-1-for-beginners/ +FiveThreeOne = { + FRI: workout.Climb, + SUN: _activeRecoverySelector(), +} From ffd12a26231f32ba563bb222184010002685069f Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 3 Nov 2022 10:43:32 -0400 Subject: [PATCH 27/28] Add workout link --- globo/exercise.py | 3 +++ globo/routine.py | 6 ++++++ globo/workout.py | 1 + globo/workout_program.py | 3 +++ 4 files changed, 13 insertions(+) diff --git a/globo/exercise.py b/globo/exercise.py index 7e9a26c..68717ea 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -338,3 +338,6 @@ def __str__(self): LowerA = Exercise("Lower A in Hevy", "https://hevy.com/routine/elcWsErdNLX") BackA = Exercise("Back A in Hevy", "https://hevy.com/routine/aBDMaIsTVRo") CoreA = Exercise("Core A in Hevy", "https://hevy.com/routine/DYJ96BcOfV4") +FiveThreeOne = Exercise( + "5/3/1 in Hevy. Review example link for exact schedule.", + "https://docs.google.com/spreadsheets/d/1h7Un7VR1_lgIhGCpaFQComvMB7GLRiRp/edit#gid=127263416") diff --git a/globo/routine.py b/globo/routine.py index 8b44381..fb80a31 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -403,3 +403,9 @@ def get_exercises(self): instructions="Hit it hard.", exercises=[exercise.LowerA] ) + +FiveThreeOneRoutine = ExerciseRoutine( + name="5/3/1", + instructions="Hit it hard.", + exercises=[exercise.FiveThreeOne] +) \ No newline at end of file diff --git a/globo/workout.py b/globo/workout.py index 4d12ed2..9a34a2f 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -134,3 +134,4 @@ def __str__(self): TrekAerobicB = Workout(name="Aerobics and Core A (in Hevy)", routines=[routine.AerobicTrainingB]) Climb = Workout(name="Climb", routines=[routine.Climb]) TrekStrength = Workout(name="Strength Training: Trek Lower A (in Hevy)", routines=[routine.TrekStrength]) +FiveThreeOneWorkout = Workout(name="5/3/1 (in sheets and Hevy)", routines=[routine.FiveThreeOneRoutine]) diff --git a/globo/workout_program.py b/globo/workout_program.py index 3352e5e..e6f75fe 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -45,6 +45,9 @@ def _activeRecoverySelector(): # Handled via Todoist for the main schedule. # See https://thefitness.wiki/routines/5-3-1-for-beginners/ FiveThreeOne = { + TUE: workout.FiveThreeOneWorkout, + THU: workout.FiveThreeOneWorkout, FRI: workout.Climb, + SAT: workout.FiveThreeOneWorkout, SUN: _activeRecoverySelector(), } From 404ec6a80fbbcd6a722f29029e60f01ee35c8d87 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 3 Dec 2022 15:50:11 -0500 Subject: [PATCH 28/28] Add downdog yoga to routine --- globo/exercise.py | 1 + globo/routine.py | 8 +++++++- globo/workout.py | 1 + globo/workout_program.py | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/globo/exercise.py b/globo/exercise.py index 68717ea..5cb8a1a 100644 --- a/globo/exercise.py +++ b/globo/exercise.py @@ -341,3 +341,4 @@ def __str__(self): FiveThreeOne = Exercise( "5/3/1 in Hevy. Review example link for exact schedule.", "https://docs.google.com/spreadsheets/d/1h7Un7VR1_lgIhGCpaFQComvMB7GLRiRp/edit#gid=127263416") +DownDogYoga = Exercise("DownDog Yoga in app", "nolink") diff --git a/globo/routine.py b/globo/routine.py index fb80a31..d3e45dd 100644 --- a/globo/routine.py +++ b/globo/routine.py @@ -408,4 +408,10 @@ def get_exercises(self): name="5/3/1", instructions="Hit it hard.", exercises=[exercise.FiveThreeOne] -) \ No newline at end of file +) + +DownDogYogaRoutine = ExerciseRoutine( + name="DownDog Yoga", + instructions="Get loose!", + exercise=[exercise.DownDogYoga] +) diff --git a/globo/workout.py b/globo/workout.py index 9a34a2f..926b540 100644 --- a/globo/workout.py +++ b/globo/workout.py @@ -135,3 +135,4 @@ def __str__(self): Climb = Workout(name="Climb", routines=[routine.Climb]) TrekStrength = Workout(name="Strength Training: Trek Lower A (in Hevy)", routines=[routine.TrekStrength]) FiveThreeOneWorkout = Workout(name="5/3/1 (in sheets and Hevy)", routines=[routine.FiveThreeOneRoutine]) +DownDogYoga = Workout(name="DownDog Yoga", routines=[routine.DownDogYogaRoutine]) diff --git a/globo/workout_program.py b/globo/workout_program.py index e6f75fe..e0b8ed0 100644 --- a/globo/workout_program.py +++ b/globo/workout_program.py @@ -42,10 +42,10 @@ def _activeRecoverySelector(): SUN: workout.Climb, } -# Handled via Todoist for the main schedule. # See https://thefitness.wiki/routines/5-3-1-for-beginners/ FiveThreeOne = { TUE: workout.FiveThreeOneWorkout, + WED: workout.DownDogYoga, THU: workout.FiveThreeOneWorkout, FRI: workout.Climb, SAT: workout.FiveThreeOneWorkout,