Skip to content

Commit b1b506b

Browse files
committed
Add examples of training plan to readme and demo script
1 parent bc85f7b commit b1b506b

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ Select a category:
2424
[9] 🎽 Gear & Equipment
2525
[0] 💧 Hydration & Wellness
2626
[a] 🔧 System & Export
27+
[b] 📅 Training plans
2728

2829
[q] Exit program
2930

@@ -45,6 +46,7 @@ Make your selection:
4546
- **Gear & Equipment**: 6 methods (gear management, tracking)
4647
- **Hydration & Wellness**: 9 methods (hydration, blood pressure, menstrual)
4748
- **System & Export**: 4 methods (reporting, logout, GraphQL)
49+
- **Traning plans**: 3 methods
4850

4951
### Interactive Features
5052

demo.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,13 @@ def __init__(self):
415415
"4": {"desc": "Execute GraphQL query", "key": "query_garmin_graphql"},
416416
},
417417
},
418+
"b": {
419+
"name": "📅 Training Plans",
420+
"options": {
421+
"1": {"desc": "Get training plans", "key": "get_training_plans"},
422+
"2": {"desc": "Get training plan by ID", "key": "get_training_plan_by_id"},
423+
},
424+
},
418425
}
419426

420427
current_category = None
@@ -1763,6 +1770,35 @@ def get_activity_exercise_sets_data(api: Garmin) -> None:
17631770
print("ℹ️ No activity exercise sets available")
17641771

17651772

1773+
def get_training_plan_by_id_data(api: Garmin) -> None:
1774+
"""Get training plan by ID. adaptive plans are not supported. use get_adaptive_training_plan_by_id instead"""
1775+
try:
1776+
training_plans = api.get_training_plans()["trainingPlanList"]
1777+
if training_plans:
1778+
plan_id = training_plans[-1]["trainingPlanId"]
1779+
plan_name = training_plans[-1]["name"]
1780+
plan_category = training_plans[-1]["trainingPlanCategory"]
1781+
1782+
if plan_category == "FBT_ADAPTIVE":
1783+
call_and_display(
1784+
api.get_adaptive_training_plan_by_id,
1785+
plan_id,
1786+
method_name="get_adaptive_training_plan_by_id",
1787+
api_call_desc=f"api.get_adaptive_training_plan_by_id({plan_id}) - {plan_name}",
1788+
)
1789+
else:
1790+
call_and_display(
1791+
api.get_training_plan_by_id,
1792+
plan_id,
1793+
method_name="get_training_plan_by_id",
1794+
api_call_desc=f"api.get_training_plan_by_id({plan_id}) - {plan_name}",
1795+
)
1796+
else:
1797+
print("ℹ️ No training plans found")
1798+
except Exception as e:
1799+
print(f"❌ Error getting plan by ID: {e}")
1800+
1801+
17661802
def get_workout_by_id_data(api: Garmin) -> None:
17671803
"""Get workout by ID for the last workout."""
17681804
try:
@@ -3123,6 +3159,12 @@ def execute_api_call(api: Garmin, key: str) -> None:
31233159
method_name="get_workouts",
31243160
api_call_desc="api.get_workouts()",
31253161
),
3162+
"get_training_plan_by_id": lambda: get_training_plan_by_id_data(api),
3163+
"get_training_plans": lambda: call_and_display(
3164+
api.get_training_plans,
3165+
method_name="get_training_plans",
3166+
api_call_desc="api.get_training_plans()",
3167+
),
31263168
"upload_activity": lambda: upload_activity_file(api),
31273169
"download_activities": lambda: download_activities_by_date(api),
31283170
"get_activity_splits": lambda: get_activity_splits_data(api),

0 commit comments

Comments
 (0)