bicycle-statistics/example-gpx-parser
Thomas Klaehn 538be61afd gpx_parser: Fix crash if gpx doesn't contain timings
Signed-off-by: Thomas Klaehn <thomas.klaehn@u-blox.com>
2018-07-24 10:37:53 +02:00

52 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python
import argparse
import datetime
import sys
import gpx_parser
def parse_args():
'''Shell argument parser.'''
parser = argparse.ArgumentParser()
parser.add_argument('infolder', help='Specify the in folder.')
return parser.parse_args()
def main():
args = parse_args()
tracks = gpx_parser.Tracks(args.infolder)
for year in range(2017, 2019):
year_distance = 0.0
year_duration = 0
for month in range(1, 13):
if month == 12:
max_day = (datetime.date(year + 1, 1, 1) - datetime.timedelta(days=1)).day
else:
max_day = (datetime.date(year, month + 1, 1) - datetime.timedelta(days=1)).day
for day in range(1, max_day + 1):
date_tracks = tracks.get(year, month, day)
date_date = datetime.datetime(year, month, day)
date_dist = 0.0
date_duration = 0
for track in date_tracks:
date_dist += track.distance
year_distance += track.distance
date_duration += track.duration.total_seconds()
year_duration += track.duration.total_seconds()
if date_dist > 0.0:
print date_date
print ' Distance: ' + str(round(date_dist / 1000, 2)) + ' km'
print ' Duration: ' + str(datetime.timedelta(seconds=int(round(date_duration, 0))))
print 'Average speed: ' + str(round(date_dist / date_duration * 3.6, 2)) + ' km/h'
print '=================='
print year
print ' Distance: ' + str(round(year_distance / 1000, 2)) + ' km'
print ' Duration: ' + str(datetime.timedelta(seconds=int(round(year_duration, 0))))
print 'Average speed: ' + str(round(year_distance / year_duration * 3.6, 2)) + ' km/h'
print '=================='
return 0
if __name__ == '__main__':
sys.exit(main())