diff --git a/LaunchScreen.storyboard b/LaunchScreen.storyboard
index 79d078e..c59449d 100644
--- a/LaunchScreen.storyboard
+++ b/LaunchScreen.storyboard
@@ -21,7 +21,7 @@
-
+
@@ -44,6 +44,6 @@
-
+
diff --git a/Werkout_ios/APIModels/Exercise.swift b/Werkout_ios/APIModels/Exercise.swift
index 82b7354..aab61e5 100644
--- a/Werkout_ios/APIModels/Exercise.swift
+++ b/Werkout_ios/APIModels/Exercise.swift
@@ -25,52 +25,6 @@ struct ExerciseElement: Codable, Equatable {
}
}
-extension ExerciseElement {
- func videoURL(thotStyle: ThotStyle) -> URL? {
- var urlString: String?
-
- switch thotStyle {
- case .always:
- urlString = exercise.nsfwVideoURL
- case .never:
- urlString = exercise.videoURL
- case .recovery:
- if self.exercise.name.lowercased() == "recover" {
- urlString = exercise.nsfwVideoURL
- } else {
- urlString = exercise.videoURL
- }
- case .random:
- if Bool.random() {
- urlString = exercise.nsfwVideoURL
- } else {
- urlString = exercise.videoURL
- }
- }
-
- if let urlString = urlString,
- let url = URL(string: BaseURLs.currentBaseURL + urlString) {
- return url
- }
- return nil
- }
-
- func returnOtherVideoURL(currentURL: URL) -> URL? {
- var urlString: String?
- if currentURL.absoluteString.lowercased().contains(exercise.nsfwVideoURL.lowercased()) {
- urlString = exercise.videoURL
- } else {
- urlString = exercise.nsfwVideoURL
- }
-
- if let urlString = urlString,
- let url = URL(string: BaseURLs.currentBaseURL + urlString) {
- return url
- }
- return nil
- }
-}
-
struct ExerciseExercise: Codable, Hashable, Identifiable {
static func == (lhs: ExerciseExercise, rhs: ExerciseExercise) -> Bool {
lhs.id == rhs.id
@@ -79,7 +33,7 @@ struct ExerciseExercise: Codable, Hashable, Identifiable {
let id: Int
let muscles: [ExerciseMuscle]
let equipment: [ExerciseEquipment]
- let audioURL, videoURL, createdAt, updatedAt, nsfwVideoURL: String
+ let audioURL, videoURL, createdAt, updatedAt: String
let name, description, side: String
let isTwoDumbbells, isTrackableDistance, isAlternating, isWeight: Bool
let isDistance, isDuration, isReps: Bool
@@ -105,52 +59,5 @@ struct ExerciseExercise: Codable, Hashable, Identifiable {
case equipmentRequired = "equipment_required"
case muscleGroups = "muscle_groups"
case synonyms
- case nsfwVideoURL = "nsfw_video_url"
- }
-}
-
-extension ExerciseExercise {
- func videoURL(thotStyle: ThotStyle) -> URL? {
- var urlString: String?
-
- switch thotStyle {
- case .always:
- urlString = nsfwVideoURL
- case .never:
- urlString = videoURL
- case .recovery:
- if self.name.lowercased() == "recovery" {
- urlString = nsfwVideoURL
- } else {
- urlString = videoURL
- }
- case .random:
- if Bool.random() {
- urlString = nsfwVideoURL
- } else {
- urlString = videoURL
- }
- }
-
- if let urlString = urlString,
- let url = URL(string: BaseURLs.currentBaseURL + urlString) {
- return url
- }
- return nil
- }
-
- func returnOtherVideoURL(currentURL: URL) -> URL? {
- var urlString: String?
- if currentURL.absoluteString.lowercased().contains(nsfwVideoURL.lowercased()) {
- urlString = videoURL
- } else {
- urlString = nsfwVideoURL
- }
-
- if let urlString = urlString,
- let url = URL(string: BaseURLs.currentBaseURL + urlString) {
- return url
- }
- return nil
}
}
diff --git a/Werkout_ios/APIModels/Workout.swift b/Werkout_ios/APIModels/Workout.swift
index 34746c8..d2ff0b2 100644
--- a/Werkout_ios/APIModels/Workout.swift
+++ b/Werkout_ios/APIModels/Workout.swift
@@ -20,10 +20,16 @@ struct Workout: Codable, Identifiable, Equatable {
let muscles: [String]?
let equipment: [String]?
let exercise_count: Int?
+ let maleVideos: [String]?
+ let femaleVideos: [String]?
+ let bothVideos: [String]?
enum CodingKeys: String, CodingKey {
case name, description, exercises, id, muscles, equipment, exercise_count
case registeredUser = "registered_user"
+ case maleVideos = "male_videos"
+ case femaleVideos = "female_videos"
+ case bothVideos = "both_videos"
}
init(from decoder: Decoder) throws {
@@ -41,6 +47,9 @@ struct Workout: Codable, Identifiable, Equatable {
self.muscles = try container.decodeIfPresent([String].self, forKey: .muscles)
self.equipment = try container.decodeIfPresent([String].self, forKey: .equipment)
self.exercise_count = try container.decodeIfPresent(Int.self, forKey: .exercise_count)
+ self.femaleVideos = try container.decodeIfPresent([String].self, forKey: .femaleVideos)
+ self.maleVideos = try container.decodeIfPresent([String].self, forKey: .maleVideos)
+ self.bothVideos = try container.decodeIfPresent([String].self, forKey: .bothVideos)
}
var exercisesSortedByCreated_at: [ExerciseElement] {
diff --git a/Werkout_ios/JSON/WorkoutDetail.json b/Werkout_ios/JSON/WorkoutDetail.json
index 5f8f2b4..e35de21 100644
--- a/Werkout_ios/JSON/WorkoutDetail.json
+++ b/Werkout_ios/JSON/WorkoutDetail.json
@@ -1,179 +1,99 @@
{
"id": 21,
- "name": "Cardio",
- "description": "Ropes, bw squat, kb swings, push up",
+ "name": "Ipad",
+ "description": "description",
"exercises": [
{
"workout": 21,
"exercise": {
- "id": 207,
+ "id": 520,
"muscles": [
{
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
+ "id": 7264,
+ "created_at": "2023-06-14T17:05:39.760515Z",
+ "updated_at": "2023-06-14T17:05:39.761372Z",
+ "exercise": 520,
+ "muscle": 16
},
{
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
+ "id": 7265,
+ "created_at": "2023-06-14T17:05:39.762342Z",
+ "updated_at": "2023-06-14T17:05:39.762814Z",
+ "exercise": 520,
+ "muscle": 4
}
],
"equipment": [
{
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
+ "id": 941,
+ "created_at": "2023-06-13T02:28:04.289213Z",
+ "updated_at": "2023-06-13T02:28:04.290354Z",
+ "exercise": 520,
+ "equipment": 1106
}
],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
+ "audio_url": "exercise_audio/1-Step_Wall_March.m4a",
+ "video_url": "exercise_videos/1-Step_Wall_March.mp4",
+ "created_at": "2023-06-11T22:50:19.020826Z",
+ "updated_at": "2023-06-11T22:50:19.020834Z",
+ "name": "1-Step Wall March",
+ "description": "Keeping a tall posture, lean forward with both arms straight ahead, palms on the wall. While pushing your toes back through the floor, drive one knee up towards your ribs. Pause, then quickly repeat the same movement with the opposite leg. ",
"side": "",
"is_two_dumbbells": false,
"is_trackable_distance": false,
- "is_alternating": false,
+ "is_alternating": true,
"is_weight": true,
"is_distance": false,
"is_duration": true,
"is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
+ "joints_used": "ankle,knee,hip,wrist,shoulder,elbow",
+ "movement_patterns": "plyometric",
+ "equipment_required": "Wall",
+ "muscle_groups": "hip flexor,glutes",
"synonyms": ""
},
"weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
+ "reps": 0,
+ "duration": null,
+ "duration_audio": null,
"weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.390761Z"
+ "created_at": "2023-06-20T21:03:00.127620Z"
},
{
"workout": 21,
"exercise": {
- "id": 875,
+ "id": 37,
"muscles": [
{
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
+ "id": 7272,
+ "created_at": "2023-06-14T17:05:39.772195Z",
+ "updated_at": "2023-06-14T17:05:39.772765Z",
+ "exercise": 37,
+ "muscle": 4
},
{
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.398349Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
+ "id": 7273,
+ "created_at": "2023-06-14T17:05:39.773621Z",
+ "updated_at": "2023-06-14T17:05:39.774079Z",
+ "exercise": 37,
"muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
}
],
"equipment": [
{
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
+ "id": 945,
+ "created_at": "2023-06-13T02:28:04.295672Z",
+ "updated_at": "2023-06-13T02:28:04.296237Z",
+ "exercise": 37,
"equipment": 1088
}
],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
+ "audio_url": "exercise_audio/2_Kettlebell_Clean.m4a",
+ "video_url": "exercise_videos/2_Kettlebell_Clean.mp4",
+ "created_at": "2023-06-11T22:50:18.813591Z",
+ "updated_at": "2023-06-11T22:50:18.813600Z",
+ "name": "2 Kettlebell Clean",
+ "description": "Standing with feet in a shoulder width stance, grab the handles of the bells and swing them back between the legs while keeping a neutral spine.\nExtend the hips, swing the bells forward, and allow them to flip around your wrists to end in the front rack position.",
"side": "",
"is_two_dumbbells": false,
"is_trackable_distance": false,
@@ -182,88 +102,18 @@
"is_distance": false,
"is_duration": true,
"is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
+ "joints_used": "shoulder,ankle,knee,hip,elbow",
+ "movement_patterns": "lower pull - hip hinge,upper pull",
"equipment_required": "Kettlebell",
"muscle_groups": "glutes,hamstrings",
"synonyms": ""
},
"weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
+ "reps": 0,
+ "duration": null,
+ "duration_audio": null,
"weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.401573Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.404879Z"
+ "created_at": "2023-06-20T21:03:00.131018Z"
},
{
"workout": 21,
@@ -271,11 +121,10 @@
"id": 798,
"muscles": [],
"equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_1.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
+ "audio_url": "exercise_audio/Recover.m4a",
+ "video_url": "exercise_videos/Recover.mp4",
+ "created_at": "2023-06-11T22:50:19.127914Z",
+ "updated_at": "2023-06-11T22:50:19.127921Z",
"name": "Recover",
"description": "Use this time to catch your breath. It will help you get more out of what's next",
"side": "",
@@ -290,2685 +139,26 @@
"movement_patterns": "",
"equipment_required": "",
"muscle_groups": "",
- "synonyms": ""
+ "synonyms": null
},
"weight": 0,
"reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
+ "duration": null,
+ "duration_audio": null,
"weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.407902Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.410753Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.414254Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.416830Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.419241Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_10.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.422037Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.424444Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.426730Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.429089Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.431459Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_5.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.433784Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.436217Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.438535Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.440908Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.443390Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_22.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.445794Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.448449Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.451109Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.453809Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.456491Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_17.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.459220Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.461902Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.464360Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.467079Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.469446Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_12.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.471957Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.474491Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.477174Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.479508Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.482121Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_5.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.484643Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.488327Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.491041Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.495527Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.497859Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_17.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.500164Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.502567Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.504865Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.507279Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.509636Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_16.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.511952Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 207,
- "muscles": [
- {
- "id": 7578,
- "created_at": "2023-06-28T04:04:37.827198Z",
- "updated_at": "2023-06-28T04:04:37.827209Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7577,
- "created_at": "2023-06-28T04:04:37.831437Z",
- "updated_at": "2023-06-28T04:04:37.831449Z",
- "exercise": 207,
- "muscle": 8
- },
- {
- "id": 7576,
- "created_at": "2023-06-28T04:04:37.836051Z",
- "updated_at": "2023-06-28T04:04:37.836062Z",
- "exercise": 207,
- "muscle": 14
- },
- {
- "id": 7575,
- "created_at": "2023-06-28T04:04:37.840545Z",
- "updated_at": "2023-06-28T04:04:37.840557Z",
- "exercise": 207,
- "muscle": 1
- },
- {
- "id": 7574,
- "created_at": "2023-06-28T04:04:37.844951Z",
- "updated_at": "2023-06-28T04:04:37.844963Z",
- "exercise": 207,
- "muscle": 2
- }
- ],
- "equipment": [
- {
- "id": 1091,
- "created_at": "2023-06-28T14:18:58.963020Z",
- "updated_at": "2023-06-28T14:18:58.963032Z",
- "exercise": 207,
- "equipment": 1101
- }
- ],
- "audio_url": "/media/exercise_audio/Battle_Ropes_Alternating_Arm_Wave.m4a",
- "video_url": "/media/exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Battle_Ropes_Alternating_Arm_Wave.mp4",
- "created_at": "2023-06-26T20:52:34.117839Z",
- "updated_at": "2023-06-26T20:52:34.117851Z",
- "name": "Battle Ropes Alternating Arm Wave",
- "description": "In an athletic stance with core braced, violently raise and slam one arm at a time. Try to move the entire rope on each slam. ",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "shoulder,ankle,wrist,elbow,knee",
- "movement_patterns": "core,arms",
- "equipment_required": "Battle Ropes",
- "muscle_groups": "core,deltoids,biceps,triceps,deltoids",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 30,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.514396Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 875,
- "muscles": [
- {
- "id": 7629,
- "created_at": "2023-06-28T04:04:37.591810Z",
- "updated_at": "2023-06-28T04:04:37.591822Z",
- "exercise": 875,
- "muscle": 5
- },
- {
- "id": 7628,
- "created_at": "2023-06-28T04:04:37.596316Z",
- "updated_at": "2023-06-28T04:04:37.596328Z",
- "exercise": 875,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1110,
- "created_at": "2023-06-28T14:18:58.875703Z",
- "updated_at": "2023-06-28T14:18:58.875715Z",
- "exercise": 875,
- "equipment": 1094
- }
- ],
- "audio_url": "/media/exercise_audio/Bodyweight_Squat_to_Bench.m4a",
- "video_url": "/media/exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Bodyweight_Squat_to_Bench.mp4",
- "created_at": "2023-06-26T20:52:34.198972Z",
- "updated_at": "2023-06-26T20:52:34.198985Z",
- "name": "Bodyweight Squat to Bench",
- "description": "",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,hip,knee",
- "movement_patterns": "lower push,lower push - squat",
- "equipment_required": "Bench",
- "muscle_groups": "glutes,quads",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.517210Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 775,
- "muscles": [
- {
- "id": 8383,
- "created_at": "2023-06-28T04:04:34.134081Z",
- "updated_at": "2023-06-28T04:04:34.134092Z",
- "exercise": 775,
- "muscle": 6
- },
- {
- "id": 8382,
- "created_at": "2023-06-28T04:04:34.138486Z",
- "updated_at": "2023-06-28T04:04:34.138498Z",
- "exercise": 775,
- "muscle": 4
- }
- ],
- "equipment": [
- {
- "id": 1423,
- "created_at": "2023-06-28T14:18:57.435815Z",
- "updated_at": "2023-06-28T14:18:57.435826Z",
- "exercise": 775,
- "equipment": 1088
- }
- ],
- "audio_url": "/media/exercise_audio/Kettlebell_Swings.m4a",
- "video_url": "/media/exercise_videos/Kettlebell_Swings.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Kettlebell_Swings.mp4",
- "created_at": "2023-06-26T20:52:35.569198Z",
- "updated_at": "2023-06-26T20:52:35.569210Z",
- "name": "Kettlebell Swings",
- "description": "With your back flat, hike the kettlebell back just above your knees. Snap your hips and stand up tall to get the kettlebell to float to chest height. Let the bell swing back down and continue this rhythmic motion. Make sure to keep your abs engaged and let the hips do the work.",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "hip,lumbar spine,knee,ankle,shoulder,wrist",
- "movement_patterns": "lower pull,lower pull - hip hinge",
- "equipment_required": "Kettlebell",
- "muscle_groups": "glutes,hamstrings",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.519610Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 463,
- "muscles": [
- {
- "id": 8740,
- "created_at": "2023-06-28T04:04:32.476530Z",
- "updated_at": "2023-06-28T04:04:32.476542Z",
- "exercise": 463,
- "muscle": 30
- },
- {
- "id": 8739,
- "created_at": "2023-06-28T04:04:32.481180Z",
- "updated_at": "2023-06-28T04:04:32.481192Z",
- "exercise": 463,
- "muscle": 2
- },
- {
- "id": 8738,
- "created_at": "2023-06-28T04:04:32.485511Z",
- "updated_at": "2023-06-28T04:04:32.485522Z",
- "exercise": 463,
- "muscle": 8
- },
- {
- "id": 8737,
- "created_at": "2023-06-28T04:04:32.490151Z",
- "updated_at": "2023-06-28T04:04:32.490163Z",
- "exercise": 463,
- "muscle": 15
- },
- {
- "id": 8736,
- "created_at": "2023-06-28T04:04:32.494610Z",
- "updated_at": "2023-06-28T04:04:32.494621Z",
- "exercise": 463,
- "muscle": 20
- }
- ],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Push-Ups.m4a",
- "video_url": "/media/exercise_videos/Push-Ups.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Push-Ups.mp4",
- "created_at": "2023-06-26T20:52:36.306043Z",
- "updated_at": "2023-06-26T20:52:36.306055Z",
- "name": "Push-Ups",
- "description": "Start in with your hands directly below your shoulders and your lower body resting on the balls of your feet. Slowly move your body down as close to the ground as you can without touching it",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": true,
- "is_distance": false,
- "is_duration": true,
- "is_reps": true,
- "joints_used": "ankle,lumbar spine,elbow,shoulder,wrist",
- "movement_patterns": "upper push,upper push - horizontal,core,core - anti-extension",
- "equipment_required": "",
- "muscle_groups": "chest,rotator cuff,triceps,core,abs",
- "synonyms": "Pushups"
- },
- "weight": 0,
- "reps": 15,
- "duration": 0,
- "duration_audio": "/media/quantities_audio/for_0_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.522201Z"
- },
- {
- "workout": 21,
- "exercise": {
- "id": 798,
- "muscles": [],
- "equipment": [],
- "audio_url": "/media/exercise_audio/Recover.m4a",
- "video_url": "/media/exercise_videos/Recover.mp4",
- "nsfw_video_url": "/media/nsfw_exercise_videos/Recover_12.mp4",
- "created_at": "2023-06-26T20:52:36.446337Z",
- "updated_at": "2023-06-26T20:52:36.446348Z",
- "name": "Recover",
- "description": "Use this time to catch your breath. It will help you get more out of what's next",
- "side": "",
- "is_two_dumbbells": false,
- "is_trackable_distance": false,
- "is_alternating": false,
- "is_weight": false,
- "is_distance": false,
- "is_duration": true,
- "is_reps": false,
- "joints_used": "",
- "movement_patterns": "",
- "equipment_required": "",
- "muscle_groups": "",
- "synonyms": ""
- },
- "weight": 0,
- "reps": 0,
- "duration": 30,
- "duration_audio": "/media/quantities_audio/for_30_seconds.m4a",
- "weight_audio": "/media/quantities_audio/for_0_pounds.m4a",
- "created_at": "2023-07-07T17:18:47.524597Z"
+ "created_at": "2023-06-20T21:03:00.134981Z"
}
],
"registered_user": {
- "id": 1,
- "first_name": "User1",
- "last_name": "user1",
+ "id": 2,
+ "first_name": "test2_first",
+ "last_name": "test2_last",
"image": "",
- "nick_name": "test user1"
- }
+ "nick_name": null
+ },
+ "male_videos": [],
+ "female_videos": [
+ "videos/Recover_8.mp4"
+ ],
+ "both_videos": []
}
diff --git a/Werkout_ios/Views/CreateWorkout/CreateWorkoutItemPickerView.swift b/Werkout_ios/Views/CreateWorkout/CreateWorkoutItemPickerView.swift
index 39cc66b..d178bb5 100644
--- a/Werkout_ios/Views/CreateWorkout/CreateWorkoutItemPickerView.swift
+++ b/Werkout_ios/Views/CreateWorkout/CreateWorkoutItemPickerView.swift
@@ -67,6 +67,7 @@ struct CreateWorkoutItemPickerView: View {
TextField("Filter", text: $searchString)
.padding()
+
HStack {
Button(action: {
viewModel.toggleAll()
diff --git a/Werkout_ios/Views/ExternalWorkoutDetailView.swift b/Werkout_ios/Views/ExternalWorkoutDetailView.swift
index 551fe5d..a2b988a 100644
--- a/Werkout_ios/Views/ExternalWorkoutDetailView.swift
+++ b/Werkout_ios/Views/ExternalWorkoutDetailView.swift
@@ -54,7 +54,11 @@ struct ExternalWorkoutDetailView: View {
}
}
.onChange(of: bridgeModule.currentExercise, perform: { newValue in
- if let videoURL = newValue?.videoURL(thotStyle: thotStyle) {
+ if let videoURL = VideoURLCreator.videoURL(
+ thotStyle: thotStyle,
+ defaultVideoURLStr: bridgeModule.currentExercise?.exercise.videoURL,
+ exerciseName: bridgeModule.currentExercise?.exercise.name,
+ workout: bridgeModule.currentWorkout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
diff --git a/Werkout_ios/Views/PlayerUIView.swift b/Werkout_ios/Views/PlayerUIView.swift
index 5bcdb1c..6b5b354 100644
--- a/Werkout_ios/Views/PlayerUIView.swift
+++ b/Werkout_ios/Views/PlayerUIView.swift
@@ -80,3 +80,34 @@ struct PlayerView: UIViewRepresentable {
uiView.setObserver()
}
}
+
+class VideoURLCreator {
+ class func videoURL(thotStyle: ThotStyle, defaultVideoURLStr: String?, exerciseName: String?, workout: Workout?) -> URL? {
+ var urlString: String?
+
+ switch thotStyle {
+ case .always:
+ urlString = workout?.femaleVideos?.randomElement()
+ case .never:
+ urlString = defaultVideoURLStr
+ case .recovery:
+ if exerciseName?.lowercased() == "recover" {
+ urlString = workout?.femaleVideos?.randomElement()
+ } else {
+ urlString = defaultVideoURLStr
+ }
+ case .random:
+ if Bool.random() {
+ urlString = workout?.femaleVideos?.randomElement()
+ } else {
+ urlString = defaultVideoURLStr
+ }
+ }
+
+ if let urlString = urlString,
+ let url = URL(string: BaseURLs.currentBaseURL + "/media/" + urlString) {
+ return url
+ }
+ return nil
+ }
+}
diff --git a/Werkout_ios/Views/WorkoutDetail/ExerciseListView.swift b/Werkout_ios/Views/WorkoutDetail/ExerciseListView.swift
index 9fa2628..1c43b40 100644
--- a/Werkout_ios/Views/WorkoutDetail/ExerciseListView.swift
+++ b/Werkout_ios/Views/WorkoutDetail/ExerciseListView.swift
@@ -16,7 +16,11 @@ struct ExerciseListView: View {
@State var videoExercise: ExerciseExercise? {
didSet {
- if let videoURL = self.videoExercise?.videoURL(thotStyle: thotStyle) {
+ if let videoURL = VideoURLCreator.videoURL(
+ thotStyle: thotStyle,
+ defaultVideoURLStr: self.videoExercise?.videoURL,
+ exerciseName: self.videoExercise?.name,
+ workout: bridgeModule.currentWorkout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
diff --git a/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift b/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift
index 1d6c718..776f47c 100644
--- a/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift
+++ b/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift
@@ -49,10 +49,14 @@ struct WorkoutDetailView: View {
}
Button(action: {
- if let assetURL = ((avPlayer.currentItem?.asset) as? AVURLAsset)?.url,
- let videoURL = bridgeModule.currentExercise?.returnOtherVideoURL(currentURL: assetURL) {
- avPlayer = AVPlayer(url: videoURL)
- avPlayer.play()
+ if let assetURL = ((avPlayer.currentItem?.asset) as? AVURLAsset)?.url {
+ if assetURL.absoluteString.lowercased().contains("exercise_videos") {
+
+ } else {
+
+ }
+// avPlayer = AVPlayer(url: videoURL)
+// avPlayer.play()
}
}, label: {
Text("Toggle THOT")
@@ -98,16 +102,25 @@ struct WorkoutDetailView: View {
}
}
.onChange(of: bridgeModule.currentExercise, perform: { newValue in
- if let videoURL = newValue?.videoURL(thotStyle: thotStyle) {
+ if let videoURL = VideoURLCreator.videoURL(
+ thotStyle: thotStyle,
+ defaultVideoURLStr: newValue?.exercise.videoURL,
+ exerciseName: newValue?.exercise.name,
+ workout: bridgeModule.currentWorkout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
})
.onAppear{
- if let videoURL = bridgeModule.currentExercise?.videoURL(thotStyle: thotStyle) {
+ if let videoURL = VideoURLCreator.videoURL(
+ thotStyle: thotStyle,
+ defaultVideoURLStr: bridgeModule.currentExercise?.exercise.videoURL,
+ exerciseName: bridgeModule.currentExercise?.exercise.name,
+ workout: bridgeModule.currentWorkout) {
avPlayer = AVPlayer(url: videoURL)
avPlayer.play()
}
+
bridgeModule.completedWorkout = {
if let workoutData = createWorkoutData() {
presentedSheet = .completedWorkout(workoutData)