38 lines
968 B
Python
38 lines
968 B
Python
# parse_fit.py
|
|
import fitdecode
|
|
import json
|
|
import sys
|
|
from datetime import datetime
|
|
|
|
path = sys.argv[1]
|
|
|
|
def to_json_safe(value):
|
|
# Converte datetime → stringa ISO
|
|
if isinstance(value, datetime):
|
|
return value.isoformat()
|
|
|
|
# Converte liste/tuple ricorsivamente
|
|
if isinstance(value, (list, tuple)):
|
|
return [to_json_safe(v) for v in value]
|
|
|
|
# Converte dict ricorsivamente
|
|
if isinstance(value, dict):
|
|
return {k: to_json_safe(v) for k, v in value.items()}
|
|
|
|
# Tutto il resto viene restituito così com'è
|
|
return value
|
|
|
|
frames = []
|
|
|
|
with fitdecode.FitReader(path) as fit:
|
|
for frame in fit:
|
|
if isinstance(frame, fitdecode.FitDataMessage):
|
|
msg = {
|
|
"name": frame.name,
|
|
"fields": {}
|
|
}
|
|
for field in frame.fields:
|
|
msg["fields"][field.name] = to_json_safe(field.value)
|
|
frames.append(msg)
|
|
|
|
print(json.dumps(frames))
|