server_photo_s85js/api_v1/scanner/parsers/parse_fit.py
2026-08-11 08:45:04 +02:00

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))