#!/usr/bin/python
import sys
import os
import re
import sqlite3
gmnpoint = re.compile('^$')
tstamp = re.compile('([0-9]{4}-[0-9]{2}-[0-9]{2})T([0-9]{2}:[0-9]{2}:[0-9]{2}).*')
parameter = re.compile('[a-z]+="(.*)"')
def parsegmn(ID, gmn, conn):
c = conn.cursor()
pipe = os.popen("/usr/bin/garmin_dump "+gmn, "r")
while 1:
line = pipe.readline()
if not line:
break
# print line
if gmnpoint.match(line):
txt = gmnpoint.sub(r"\1", line[:-1])
# print txt
params = txt.split(" ")
if len(params) == 5:
for i in range(5):
params[i] = parameter.sub(r"\1", params[i])
if i == 0:
params[i] = tstamp.sub(r"\1 \2", params[i])
else:
params[i] = float(params[i])
# print params[i]
query = "INSERT INTO gmn VALUES "
query = query + "(%d,'%s',%f,%f,%f,%f);" % \
(ID,params[0],params[1],params[2],params[3],params[4])
print query
c.execute(query)
conn.commit()
c.close()
if __name__ == "__main__":
if len(sys.argv) > 2:
title = sys.argv[1]
gmn = sys.argv[2]
bn = os.path.basename(gmn)
date = bn[0:4]+"-"+bn[4:6]+"-"+bn[6:11]+":"+bn[11:13]+":"+bn[13:15]
conn = sqlite3.connect('jogging.db')
c = conn.cursor()
query = "INSERT INTO rounds VALUES (NULL,'%s','%s');" % (date, title)
print query
c.execute(query)
conn.commit()
query = "SELECT MAX(id) FROM rounds;"
c.execute(query)
row = c.fetchone()
ID = int(row[0])
c.close()
parsegmn(ID, gmn, conn)
else:
print "usage: %s " % (sys.argv[0])
sys.exit(1)