Public Access
Fetch Garmin fitness age
This commit is contained in:
1 parent
bf75213f29
commit
610929aae2
1 file changed
+101
@@ -83,6 +83,76 @@ def seconds_to_minutes(value):
|
|||||||
):
|
):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def find_nested_value(data, wanted_keys):
|
||||||
|
if isinstance(
|
||||||
|
data,
|
||||||
|
dict,
|
||||||
|
):
|
||||||
|
for key, value in data.items():
|
||||||
|
if key in wanted_keys and value is not None:
|
||||||
|
return value
|
||||||
|
|
||||||
|
nested = find_nested_value(
|
||||||
|
value,
|
||||||
|
wanted_keys,
|
||||||
|
)
|
||||||
|
|
||||||
|
if nested is not None:
|
||||||
|
return nested
|
||||||
|
|
||||||
|
if isinstance(
|
||||||
|
data,
|
||||||
|
list,
|
||||||
|
):
|
||||||
|
for item in data:
|
||||||
|
nested = find_nested_value(
|
||||||
|
item,
|
||||||
|
wanted_keys,
|
||||||
|
)
|
||||||
|
|
||||||
|
if nested is not None:
|
||||||
|
return nested
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def extract_fitness_age(*sources):
|
||||||
|
value = find_nested_value(
|
||||||
|
sources,
|
||||||
|
{
|
||||||
|
"fitnessAge",
|
||||||
|
"fitness_age",
|
||||||
|
"fitnessAgeValue",
|
||||||
|
"fitnessage",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
if value is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
return float(value)
|
||||||
|
except (
|
||||||
|
TypeError,
|
||||||
|
ValueError,
|
||||||
|
):
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def extract_fitness_age_description(*sources):
|
||||||
|
value = find_nested_value(
|
||||||
|
sources,
|
||||||
|
{
|
||||||
|
"fitnessAgeDescription",
|
||||||
|
"fitness_age_description",
|
||||||
|
"fitnessAgeDesc",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
if value is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return str(value)
|
||||||
|
|
||||||
# ---------------------------------------------------------
|
# ---------------------------------------------------------
|
||||||
# LOGIN
|
# LOGIN
|
||||||
@@ -474,6 +544,31 @@ def collect_day(
|
|||||||
{},
|
{},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fitness_age_data = safe_call(
|
||||||
|
lambda:
|
||||||
|
garmin.get_fitnessage_data(
|
||||||
|
day_str
|
||||||
|
)
|
||||||
|
if hasattr(
|
||||||
|
garmin,
|
||||||
|
"get_fitnessage_data",
|
||||||
|
)
|
||||||
|
else garmin.connectapi(
|
||||||
|
f"/fitnessage-service/fitnessage/{day_str}"
|
||||||
|
),
|
||||||
|
{},
|
||||||
|
)
|
||||||
|
|
||||||
|
fitness_age_value = extract_fitness_age(
|
||||||
|
fitness_age_data,
|
||||||
|
training_status,
|
||||||
|
)
|
||||||
|
|
||||||
|
fitness_age_description = extract_fitness_age_description(
|
||||||
|
fitness_age_data,
|
||||||
|
training_status,
|
||||||
|
)
|
||||||
|
|
||||||
sleep_dto = (
|
sleep_dto = (
|
||||||
sleep.get(
|
sleep.get(
|
||||||
"dailySleepDTO",
|
"dailySleepDTO",
|
||||||
@@ -846,6 +941,12 @@ def collect_day(
|
|||||||
training_status.get(
|
training_status.get(
|
||||||
"mostRecentTrainingLoadBalance"
|
"mostRecentTrainingLoadBalance"
|
||||||
),
|
),
|
||||||
|
|
||||||
|
"fitnessAge":
|
||||||
|
fitness_age_value,
|
||||||
|
|
||||||
|
"fitnessAgeDescription":
|
||||||
|
fitness_age_description,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user