https://github.com/jimmykane/fit-parser
Parse your FIT files easily, directly from JS (Garmin, Polar, Suunto)
https://github.com/jimmykane/fit-parser
fit garmin polar suunto
Last synced: 6 months ago
JSON representation
Parse your FIT files easily, directly from JS (Garmin, Polar, Suunto)
- Host: GitHub
- URL: https://github.com/jimmykane/fit-parser
- Owner: jimmykane
- License: other
- Fork: true (pierremtb/easy-fit)
- Created: 2018-05-03T13:37:51.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-01-02T08:12:15.000Z (9 months ago)
- Last Synced: 2025-04-04T09:47:44.346Z (6 months ago)
- Topics: fit, garmin, polar, suunto
- Language: JavaScript
- Homepage:
- Size: 1.95 MB
- Stars: 100
- Watchers: 6
- Forks: 37
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# fit-file-parser
> Parse your .FIT files easily, directly from JS.
> Written in ES6. (Hope to change)## Install
```
$ npm install fit-file-parser --save
```## How to use
See in [examples](./examples) folder:
```javascript
// Require the module
var FitParser = require('./../dist/fit-file-parser.js').default;// Read a .FIT file
var fs = require('fs');
fs.readFile('./example.fit', function (err, content) {// Create a FitParser instance (options argument is optional)
var fitParser = new FitParser({
force: true,
speedUnit: 'km/h',
lengthUnit: 'km',
temperatureUnit: 'kelvin',
pressureUnit: 'bar', // accept bar, cbar and psi (default is bar)
elapsedRecordField: true,
mode: 'cascade',
});
// Parse your file
fitParser.parse(content, function (error, data) {
// Handle result of parse method
if (error) {
console.log(error);
} else {
console.log(JSON.stringify(data));
}
});
});
```## API Documentation
### new FitParser(Object _options_)
Needed to create a new instance. _options_ is optional, and is used to customize the returned object.Allowed properties :
- `mode`: String
- `cascade`: Returned object is organized as a tree, eg. each lap contains a `records` fields, that is an array of its records (**default**)
- `list`: Returned object is organized as lists of sessions, laps, records, etc..., without parent-child relation
- `both`: A mix of the two other modes, eg. `records` are available inside the root field as well as inside each laps
- `lengthUnit`: String
- `m`: Lengths are in meters (**default**)
- `km`: Lengths are in kilometers
- `mi`: Lengths are in miles
- `temperatureUnit`: String
- `celsius`:Temperatures are in °C (**default**)
- `kelvin`: Temperatures are in °K
- `fahrenheit`: Temperatures are in °F
- `speedUnit`: String
- `m/s`: Speeds are in meters per seconds (**default**)
- `km/h`: Speeds are in kilometers per hour
- `mph`: Speeds are in miles per hour
- `force`: Boolean
- `true`: Continues even if they are errors (**default for now**)
- `false`: Stops if an error occurs
- `elapsedRecordField`: Boolean
- `true`: Includes `elapsed_time`, containing the elapsed time in seconds since the first record, and `timer_time`, containing the time shown on the device, inside each `record` field
- `false` (**default**)### fitParser.parse(Buffer _file_, Function _callback_)
_callback_ receives two arguments, the first as a error String, and the second as Object, result of parsing.## Contributors
All started thanks to [Pierre Jacquier](https://github.com/pierremtb)Big thanks to [Mikael Lofjärd](https://github.com/mlofjard) for [his early prototype](https://github.com/mlofjard/jsonfit).
See [CONTRIBUTORS](./CONTRIBUTORS.md).## License
MIT license; see [LICENSE](./LICENSE).
(c) 2019 Dimitrios Kanellopoulos