@@ -288,16 +288,39 @@ def _process_fitness_equipment(self, sub_sport, activity_id, json_data):
288
288
root_logger .debug ("fitness_equipment (%s) for %d: %r" , sub_sport , activity_id , json_data )
289
289
self ._call_process_func (sub_sport .name , None , activity_id , json_data )
290
290
291
+ @classmethod
292
+ def get_self_eval_feel (cls , value ):
293
+ """Return the Garmin Connect self evaluation 'How did you feel' label for the activity."""
294
+ levels = [(100 , "Very Strong" ), (75 , "Strong" ), (50 , "Normal" ), (25 , "Weak" ), (0 , "Very Weak" )]
295
+ for threshold , label in levels :
296
+ print (f"Threshold { threshold } label { label } " )
297
+ if value >= threshold :
298
+ return label
299
+
300
+ @classmethod
301
+ def get_self_eval_effort (cls , value ):
302
+ """Return the Garmin Connect self evaluation perceived effort label for the activity."""
303
+ levels = [(100 , "Maximum" ), (90 , "Extremely Hard" ), (70 , "Very Hard" ), (50 , "Hard" ),
304
+ (40 , "Somewhat Hard" ), (30 , "Moderate" ), (20 , "Light" ), (10 , "Very Light" ), (0 , "None" )]
305
+ for threshold , label in levels :
306
+ print (f"Threshold { threshold } label { label } " )
307
+ if value >= threshold :
308
+ return label
309
+
291
310
def _activities_process_json (self , json_data ):
292
311
activity_id = json_data ['activityId' ]
293
312
metadata_dto = json_data ['metadataDTO' ]
294
313
summary_dto = json_data ['summaryDTO' ]
295
314
sport , sub_sport = get_details_sport (json_data )
315
+ self_eval_feel = self ._get_field (summary_dto , 'directWorkoutFeel' , int )
316
+ self_eval_effort = self ._get_field (summary_dto , 'directWorkoutRpe' , int )
296
317
activity = {
297
- 'activity_id' : activity_id ,
298
- 'course_id' : self ._get_field (metadata_dto , 'associatedCourseId' , int ),
299
- 'self_eval_feel' : self ._get_field (summary_dto , 'directWorkoutFeel' , int ),
300
- 'self_eval_effort' : self ._get_field (summary_dto , 'directWorkoutRpe' , int )
318
+ 'activity_id' : activity_id ,
319
+ 'course_id' : self ._get_field (metadata_dto , 'associatedCourseId' , int ),
320
+ 'device_serial_number' : self ._get_field (metadata_dto , 'deviceId' , int ),
321
+ 'self_eval_feel' : self .get_self_eval_feel (self_eval_feel ) if (self_eval_feel is not None ) else None ,
322
+ 'self_eval_effort' : self .get_self_eval_effort (self_eval_effort ) if (self_eval_effort is not None ) else None ,
323
+ 'training_load' : self ._get_field (summary_dto , 'activityTrainingLoad' , float )
301
324
}
302
325
activity .update (self ._process_common (summary_dto ))
303
326
Activities .s_insert_or_update (self .garmin_act_db_session , activity , ignore_none = True )
0 commit comments