#fit #ant #serde #file-format #garmin #content

fitparser

一个用于解析 ANT .FIT 文件并允许使用 serde 序列化的工具

13 个不稳定版本

0.7.0 2024年3月20日
0.6.1 2023年9月5日
0.6.0 2023年6月3日
0.5.1 2022年8月31日
0.2.0 2020年6月4日

#394解析器实现

Download history 20/week @ 2024-04-22 13/week @ 2024-04-29 7/week @ 2024-05-06 34/week @ 2024-05-13 17/week @ 2024-05-20 100/week @ 2024-05-27 29/week @ 2024-06-03 10/week @ 2024-06-10 15/week @ 2024-06-17 52/week @ 2024-06-24 16/week @ 2024-07-01 32/week @ 2024-07-08 56/week @ 2024-07-15 67/week @ 2024-07-22 45/week @ 2024-07-29 57/week @ 2024-08-05

每月下载量 238

MIT 许可证

3MB
95K SLoC

Fitparser

LICENSE Crates.io Version Docs.rs Build Status

概述

解析 FIT 格式的文件并使用 Serde 导出其内容。此代码受到了 python-fitparse 模块的极大启发,并使用了由 ANT 维护的 Fit 文件 SDK 定义的规范。

该 crate 的目标是根据定义的 FIT 配置文件解析有效的 FIT 文件,并将它们的数据导出为更易用的格式。为此,我们利用了 Serde 框架,允许最终用户将数据导出为满足他们需求的任何格式。此库提供了一个 fit_to_json 示例可执行文件,作为使用 Serde 实现其他序列化格式的模板。

注意

  • 此库目前 不支持 编写 FIT 文件。
  • 带有开发者数据字段的文件可以被解析,但开发者字段将被删除。
  • Fit SDK 由 Garmin/Ant 定期更新,此库可能不是最新的;请检查 src/profile/messages.rs 中的打包版本。提交一个问题,我会很高兴更新它!

用法

有关完整的使用信息,请参阅 docs.rs/fitparser 中的库文档。下面是调用解析器对 FIT 文件进行操作的基本示例。

use fitparser;
use std::fs::File;
use std::io::prelude::*;

println!("Parsing FIT files using Profile version: {}", fitparser::profile::VERSION);
let mut fp = File::open("tests/fixtures/Activity.fit")?;
for data in fitparser::from_reader(&mut fp)? {
    // print the data in FIT file
    println!("{:#?}", data);
}

对于更底层的反序列化过程控制,例如从流数据源读取,您可以使用 de::FitStreamProcessor 结构。请参阅 streaming.rs 示例文件以获取基本用法和手动处理 FitObject 变体的说明。

还提供了其他解码选项,可以自定义解析器的输出。请参阅 fitparser/src/de/mod.rs 的源代码以查看所有选项(或查看 crate 文档)。fit_to_json 示例程序也演示了目前所有可用的选项。

更新 FIT 配置文件

所有FIT文件都是根据可定制的配置文件生成的。此处使用的配置文件来自ANT的官方SDK,可以通过以下链接访问:这里。cargo build命令期望环境变量FIT_PROFILE设置为所需的Profile.xlsx文件路径,并将变量FIT_PROFILE_VERSION设置为适当的版本。为了简化更新过程,提供了一个脚本./bin/update_profile.sh,该脚本接受配置文件路径作为第一个参数,并可选地接受配置版本作为第二个参数。如果Profile.xlsx文件的路径包含FitSDKRelease_XX.YY.ZZ,则可以省略版本号。

./bin/update_profile.sh ~/Downloads/FitSDKRelease_21.40.00/Profile.xlsx

构建库不需要配置文件,因为生成的文件已提交到仓库。只有在需要支持自定义扩展或ANT发布更新版本时,才需要更新配置文件。

依赖关系

~2.1–3MB
~59K SLoC