{"id":19783313,"url":"https://github.com/stadelmanma/fitparse-rs","last_synced_at":"2025-11-11T11:17:56.932Z","repository":{"id":41868250,"uuid":"248106669","full_name":"stadelmanma/fitparse-rs","owner":"stadelmanma","description":"Rust library to parse FIT formatted files","archived":false,"fork":false,"pushed_at":"2025-01-21T01:57:09.000Z","size":1802,"stargazers_count":63,"open_issues_count":7,"forks_count":13,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-28T09:01:42.917Z","etag":null,"topics":["ant","crates","fit","fit-sdk","fitparse","garmin","nom","serde"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stadelmanma.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-18T01:02:07.000Z","updated_at":"2025-03-18T12:44:45.000Z","dependencies_parsed_at":"2024-01-11T21:39:05.167Z","dependency_job_id":"ddfd4b74-3e2a-46d2-8829-8eaa96af3f17","html_url":"https://github.com/stadelmanma/fitparse-rs","commit_stats":{"total_commits":269,"total_committers":5,"mean_commits":53.8,"dds":0.0780669144981413,"last_synced_commit":"114139457a2450a111d5ccd76a34a3874b29f81d"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stadelmanma%2Ffitparse-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stadelmanma%2Ffitparse-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stadelmanma%2Ffitparse-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stadelmanma%2Ffitparse-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stadelmanma","download_url":"https://codeload.github.com/stadelmanma/fitparse-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247149506,"owners_count":20891954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ant","crates","fit","fit-sdk","fitparse","garmin","nom","serde"],"created_at":"2024-11-12T06:07:55.981Z","updated_at":"2025-11-11T11:17:56.887Z","avatar_url":"https://github.com/stadelmanma.png","language":"Rust","funding_links":[],"categories":["Tools"],"sub_categories":["Older resources"],"readme":"# Fitparser\n\n[![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Crates.io Version](https://img.shields.io/crates/v/fitparser.svg)](https://crates.io/crates/fitparser)\n[![Docs.rs](https://docs.rs/fitparser/badge.svg)](https://docs.rs/fitparser)\n[![Build Status](https://github.com/stadelmanma/fitparse-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/stadelmanma/fitparse-rs/actions/workflows/ci.yml)\n\n## Overview\n\nParses FIT formatted files and exports their contents using\n[Serde](https://github.com/serde-rs/serde). This code was heavily\ninspired by the\n[python-fitparse](https://github.com/dtcooper/python-fitparse) module\nand uses the specifications defined by the Fit File SDK which is\nmaintained by [ANT](https://www.thisisant.com).\n\nThe goal of this crate is to parse valid FIT files according to the\ndefined FIT profile and export their data into a more usable format. To that\nend we leverage the Serde framework which allows end users to export the\ndata in whatever format suits their needs. This library provides a\n`fit_to_json` example executable to serve as a template for any\nother serialization format implemented using Serde.\n\nNotes:\n\n- This library **does not** support writing FIT files at this time.\n- Files with Developer Data fields can be parsed and the developer\n  fields are correctly extracted.\n- The FIT SDK is regularly updated by Garmin/Ant this library may not\n  be up to date; check the `src/profile/messages.rs` for the packaged version.\n  Submit an issue and I will gladly bump it!\n\n## Usage\n\nSee library documentation at [docs.rs/fitparser](https://docs.rs/fitparser)\nfor full usage information. Below is a basic example of calling the parser\non a FIT file.\n\n```rust\nuse fitparser;\nuse std::fs::File;\nuse std::io::prelude::*;\n\nprintln!(\"Parsing FIT files using Profile version: {}\", fitparser::profile::VERSION);\nlet mut fp = File::open(\"tests/fixtures/Activity.fit\")?;\nfor data in fitparser::from_reader(\u0026mut fp)? {\n    // print the data in FIT file\n    println!(\"{:#?}\", data);\n}\n```\n\nFor lower level control of the deserialization process, such as reading from\na streaming data source you can use the `de::FitStreamProcessor` struct. See\nthe `streaming.rs` example file for basic usage and manual processing of\n`FitObject` variants.\n\nAdditional decoding options are also available to customize the output of the\nparser. See the source code of the `fitparser/src/de/mod.rs` to view all options\n(or view the crate docs). The `fit_to_json` example program demos all of the\ncurrently available options as well.\n\n## Updating the FIT profile\n\nAll FIT files are generated based on a customizable profile. The profile\nused here is pulled from ANT's official SDK which can be accessed\n[here](https://developer.garmin.com/fit/download/). The\ncargo build command expects the environment variable `FIT_PROFILE` to be set to the\npath of the desired Profile.xlsx file and the `FIT_PROFILE_VERSION` variable to\nthe appropriate version. To make updating simpler a script is provided\n`./bin/update_profile.sh` that accepts the profile path the as first argument\nand optionally a profile version as the second. The version can be omitted\nif the path to the Profile.xlsx file contains `FitSDKRelease_XX.YY.ZZ`.\n\n```sh\n./bin/update_profile.sh ~/Downloads/FitSDKRelease_21.40.00/Profile.xlsx\n```\n\nA profile file is not required for building the library as the files\ngenerated are committed to the repository. The profile only needs\nupdated to support custom extensions or when ANT releases an updated\nversion.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstadelmanma%2Ffitparse-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstadelmanma%2Ffitparse-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstadelmanma%2Ffitparse-rs/lists"}