sport2fit — 运动数据 → FIT 通用转换
> 把华为 / Keep / 小米 / Apple / 三星等运动 App 的导出数据转成标准 FIT,再导入高驰 / Garmin / Strava。
> 渐进式披露:本文件只给"能跑起来"的最短路径与红线。深层细节(导出方式、校验清单、扩展方法、华为坑点)按需展开到 references/,见下方「查阅地图」。
触发场景
- 关键词:华为导出转高驰、运动数据转 FIT、把 XX 手表记录导入 XX 平台、运动轨迹格式转换
- 用户问"某平台运动数据怎么导出" → 查
references/export-guide.md - 转换后导入失败 / 地图异常 → 查
references/verification.md
30 秒上手
python3 -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
pip install fit_tool python-fitparse pyyaml
python scripts/sport2fit.py \
--src <导出目录或json> \
--out <输出目录> \
--target coros \ # 默认 coros
--zip # 可选,顺手打包便于逐个导入
--target默认 coros,影响config/platforms.yaml的平台怪癖修正--zip:把所有.fit打包成<输出目录>/<目录名>_all.zip(高驰需逐个导入)- 无 GPS 记录(跑步机)自动生成纯心率 FIT
- 逐条质量校验,单条失败不中断,末尾汇总成功 / 失败数
我要做什么?→ 去哪查(查阅地图)
| 你要做的事 | 打开 |
|---|---|
| 告诉用户某 App 怎么导出数据 | references/export-guide.md |
| 转换后导入失败 / 地图显示异常排查 | references/verification.md |
| 加新数据源(写 adapter) | references/extend.md |
| 华为格式坑点 / 坐标系细节 | references/huawei-health.md |
实现状态
| 源 | 状态 |
|---|---|
| huawei(华为全量导出包) | ✅ 已实装,坑见 huawei-health.md |
| keep / mifit / apple / samsung / strava | 📋 仅导出方式已采集,待实装 adapter |
红线(必须遵守,细节见对应 reference)
- ❌ 室内跑别写
fitness_equipment:高驰拒收,用running + sub_sport=treadmill - ❌ 别把无效坐标哨兵点(lat=90 / lon=-80、(0,0))写进 FIT,否则地图缩放到全球
- ❌ 距离 / 时长必须自洽(total_distance 与 record 累计、elapsed 与数据跨度),高驰静默拒收不自洽
- ⚠️ 坐标系:境内 GCJ02 必转 WGS84,境外 WGS84 不转
- ⚠️ 源单位先核实(华为 totalDistance=米、totalCalories=毫卡)
- ⚠️ 损坏值(如海拔 1.5e308)宁可丢字段也别写