3 个版本 (破坏性更新)
0.5.0 | 2024年7月2日 |
---|---|
0.4.0 | 2024年6月21日 |
0.3.0 | 2024年6月21日 |
#692 在 解析器实现
每月31次下载
215KB
7K SLoC
Garmin .FIT 解析器
一个项目,旨在更好地熟悉 rust-lang。
该工具本身解析 .FIT 文件并将其转换为 JSON 格式的消息。
目前正在进行大量工作...但您已经可以尝试它了。
安装
cargo install rusty-but-fit
命令
Parsing for Garmin's FIT file format
Usage: rusty-but-fit [OPTIONS] --file <FILE> <COMMAND>
Commands:
summary Create summary of all messages and their count
messages Return messages defined by the -m parameter
raw Outputs all messages, incl. unknown messages and invalid fields
help Print this message or the help of the given subcommand(s)
Options:
-f, --file <FILE> FIT file to parse
-d Debug output (cannot be piped to jq)
-u, --unknown-fields Output unknown fields
-i, --invalid-values Output invalid values
-h, --help Print help
-V, --version Print version
示例
summary
命令
输出文件中的消息类型及其数量
rusty-but-fit -f activity2.fit summary
{
"Lap": 1,
"Session": 1,
"Time in zone": 2,
"GPS Metadata": 1826,
"Totals": 1,
"Record": 382,
"Unknown": 2004,
"Sport": 1,
"Training file": 2,
"Activity": 1,
"Zones target": 1,
"Device settings": 1,
"Connected devices (undocumented)": 1,
"Event": 7,
"User profile": 1,
"Device info": 20,
"File Id": 1,
"File creator": 1
}
messages
命令
messages
参数
Return messages defined by the -m parameter
Usage: rusty-but-fit --file <FILE> messages [OPTIONS]
Options:
-m, --message_type <MESSAGE_TYPE> Message types as enumerated from 'summary' command. Can be repeated for multiple messages.
-h, --help Print help
获取特定类型的消息
rusty-but-fit -f activity2.fit messages -m "Activity"
{
"local_timestamp": 1078141854,
"num_sessions": 1,
"type": "Manual",
"event": "Activity",
"timestamp": 1078138254,
"event_type": "Stop",
"total_timer_time": 1717468
}
从 Record
类型读取位置数据
这可能需要从半圆转换为度。
rusty-but-fit -f activity2.fit messages -m 'Record' | jq --argjson conversion "$((2**31))" '.[].message | {lon: (."position_long" * 180/$conversion), lat: (."position_lat" * 180/$conversion)}'
...
{
"lon": 10.557905668392777,
"lat": 52.23186925984919
}
{
"lon": 10.557780275121331,
"lat": 52.231866996735334
}
{
"lon": 10.557699054479599,
"lat": 52.23186397925019
}
{
"lon": 10.55741960182786,
"lat": 52.231861716136336
}
...
依赖项
~2–3MB
~60K SLoC