Beispiel #1
0
    def test_fitfile_parses_with_correct_number_of_recs_defs_and_file_size_and_CRC(self):
        fit = FitFile(testfile('sample-activity.fit'))
        fit.parse()

        self.assertEquals(len(fit.records), 3228)
        self.assertEquals(len(fit.definitions), 9)
        self.assertEquals(fit._file_size, 104761)
        self.assertEquals(fit._crc, 0x75C5)
Beispiel #2
0
    def test_fitfile_parses_with_correct_number_of_recs_defs_and_file_size_and_CRC(self):
        fit = FitFile(testfile('sample-activity.fit'))
        fit.parse()

        self.assertEquals(len(fit.records), 3228)
        self.assertEquals(len(fit.definitions), 9)
        self.assertEquals(fit._file_size, 104761)
        self.assertEquals(fit._crc, 0x75C5)
Beispiel #3
0
#!/usr/bin/env python

from fitparse.base import FitFile


fit_file = FitFile('example.fit')
fit_file.parse()

records = fit_file.get_records_as_dicts()

for record in records:
    print '\nRecord:'

    for key, value in record.iteritems():
        print ' - %s: %s' % (key.replace('_', ' ').capitalize(), value)
Beispiel #4
0
def FitToDataTable(MyFile, Fields):
    File = FitFile(MyFile)
    File.parse()
    ##obtention des enregistrements
    Values = File.get_messages()
    ##iteration sur les header inutiles jusqu'a l'annonce du fichier cycling
    Records = ExtractRecords(Values)
    #    Continue = True
    #    while Continue :
    #        Record = Values.next()
    #        try :
    #            if Record["sport"] == "cycling" :
    #               Continue = False
    #        except KeyError :
    #            pass
    Datas = []
    i = 0
    #iteration sur les enregistrements
    Prec = None
    for Record in Records:
        #        #print(Record)
        #        if Record.has_key("product")==True :
        #            #rendu ici il n'y a plus d'enregistrements
        #            try :
        #                Record = Values.next()
        #                if Record.has_key("event_type") == False :
        #                    print("Hey, we have to continue !")
        #                else :
        #                    break
        #            except :
        #                break
        #        if Record.has_key("event_type") == False :
        #            #sauter les evenements indiquant le 5km
        #            #transformer le timestamp moche en un beau chiffre
        TIME = time.mktime(Record["timestamp"].timetuple()) + (
            Config["FitFile"]["Decalage"] * 60)
        #TIME = Record["timestamp"] + (Config["FitFile"]["Decalage"]*60*60)
        Record["timestamp"] = int(TIME)
        #print(Fields)
        #try :
        Row = []
        NoMissing = True
        for Field in Fields:
            if Field.RealName not in Record:
                Row.append(Field.Default)
                #print("          Missing this Field : "+Field.RealName)
                NoMissing = False
            else:
                try:
                    Row.append(Record[Field.RealName])
                except KeyError as e:
                    print("This Key is missing : " + Field.RealName)
                    print(Record)
                    raise e

        #Row = list((Record[Field.RealName] for Field in Fields))
#            except :
#                print("Error : ")
#                print(Record)
#                print(Row)
#                raise KeyError
        Row.insert(0, i)
        Datas.append(tuple(Row))
        i += 1
        if NoMissing:
            Prec = Record
    if Prec is None:
        raise ValueError(
            "Prec is none, so we have a problem with this file : " + MyFile)
    #obtention des types des enregistrements
    Types = [VL.GessNumpyType(str(Prec[Field.RealName])) for Field in Fields]
    FieldNames = [Field.Name for Field in Fields]
    FieldNames.insert(0, "OID")
    Types.insert(0, "int32")
    #print(Types)
    BD = VL.JDataTable(FieldNames, Types, "OID", Datas)
    return BD