diff --git a/analyze_sport_data/file_records.py b/analyze_sport_data/file_records.py index 6505250..fc00bc0 100644 --- a/analyze_sport_data/file_records.py +++ b/analyze_sport_data/file_records.py @@ -1,5 +1,6 @@ from datetime import timedelta from analyze_sport_data.heart_rate_record import HeartRateRecord +from garmin_fit_sdk import Decoder, Stream class FileRecords: @@ -14,3 +15,17 @@ class FileRecords: record.heart_rate) for record in heart_rate_records ] self.heart_rate_time_offset = heart_rate_time_offset + + +def from_fit_file(file_path: str, + friendly_name: str | None = None) -> FileRecords: + stream = Stream.from_file(file_path) + decoder = Decoder(stream) + messages, _errors = decoder.read() + records = messages["record_mesgs"] + heart_rate_records: list[HeartRateRecord] = [ + HeartRateRecord(record["timestamp"], record["heart_rate"]) + for record in records if record["heart_rate"] != None + ] + return FileRecords(friendly_name if friendly_name != None else file_path, + heart_rate_records)