Skip to content

Commit 1d75915

Browse files
committed
Added Sample fitdump Script
1 parent bfb440a commit 1d75915

4 files changed

Lines changed: 48 additions & 9 deletions

File tree

‎MANIFEST.in‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
include LICENSE
2+
include README.md

‎fitparse/records.py‎

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ def as_dict(self):
102102
'fields': [f.as_dict() for f in self.fields],
103103
}
104104

105+
def __iter__(self):
106+
return iter(self.fields)
107+
105108
def __repr__(self):
106109
return '<DataMessage: %s (#%d) -- local mesg: #%d, fields: [%s]>' % (
107110
self.name, self.mesg_num, self.local_mesg_num,
@@ -165,14 +168,7 @@ def as_dict(self):
165168
'raw_value': self.raw_value,
166169
}
167170

168-
def __iter__(self):
169-
for field in sorted(
170-
self.fields, key=lambda f: (int(f.name is None), f.name, f.def_num),
171-
):
172-
if not field.components:
173-
yield field
174-
175-
def __str__(self):
171+
def __str__(self): # TODO: not sure I like this
176172
return '%s: %s%s' % (
177173
self.name if self.name else 'unknown-%d' % self.def_num,
178174
self.value, ' [%s]' % self.units if self.units else '',

‎scripts/fitdump‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env python
2+
3+
import os
4+
import sys
5+
6+
from fitparse import FitFile, FitParseError
7+
8+
9+
def dump(filename):
10+
try:
11+
fitfile = FitFile(filename)
12+
13+
for data_message in fitfile:
14+
print "%s (mesg num: #%d)" % (data_message.name, data_message.mesg_num)
15+
for field_data in sorted(
16+
data_message,
17+
key=lambda fd: (
18+
# Sort by known fields first
19+
int(fd.name.startswith('unknown')),
20+
# Then by def num if known, otherwise name
21+
fd.def_num if fd.name.startswith('unknown') else fd.name,
22+
),
23+
):
24+
print " * %s" % field_data
25+
print
26+
27+
except FitParseError, e:
28+
print "Error parsing %s: %s" % (filename, e)
29+
30+
31+
if __name__ == '__main__':
32+
if len(sys.argv) < 2:
33+
print "Usage: %s <file.fit> [<file2.fit> ...]" % os.path.basename(__file__)
34+
sys.exit(0)
35+
36+
for filename in sys.argv[1:]:
37+
print "%(hashes)s\n# %(filename)s #\n%(hashes)s\n" % {
38+
'filename': filename, 'hashes': '#' * (len(filename) + 4),
39+
}
40+
dump(filename)
41+
print

‎setup.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
url='http://www.github.com/dtcooper/python-fitparse',
1010
license=open('LICENSE').read(),
1111
packages=['fitparse'],
12-
data_files=[("", ["LICENSE"])],
12+
scripts=['scripts/fitdump'], # Don't include generate_profile.py
1313
)

0 commit comments

Comments
 (0)