Created
May 9, 2015 07:44
-
-
Save bleader/5844671e36cc4f13e4f9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python2 | |
# gpx | |
import gpxpy | |
import gpxpy.gpx | |
# srt | |
import pysrt | |
#misc | |
import argparse | |
import os | |
import sys | |
# parse argument | |
parser = argparse.ArgumentParser(description='Convert gpx info to srt') | |
parser.add_argument('-i', '--input', | |
required=True, | |
help='input gpx file') | |
parser.add_argument('-o', '--output', | |
default='out.srt', | |
help='output file, default to out.srt') | |
parser.add_argument('-f', '--force', action='store_true', | |
help='force overwritting output file') | |
parser.add_argument('-s', '--start', type=int, | |
help='start time offset in gpx, in seconds') | |
parser.add_argument('-e', '--end', type=int, | |
help='end time from start of gpx, in seconds') | |
args = parser.parse_args() | |
# parse gpx | |
gpx_file = open(args.input, 'r') | |
gpx = gpxpy.parse(gpx_file) | |
# open srt | |
if not os.path.isfile(args.output): | |
open(args.output, 'a').close() | |
else: | |
if not args.force: | |
print "Output file %s exists, use -f to force overwritting." % args.output | |
sys.exit(1) | |
else: | |
open(args.output, 'w').close() | |
sub = pysrt.open(args.output) | |
prev = 0 | |
index = 0 | |
for track in gpx.tracks: | |
for segment in track.segments: | |
for point in segment.points: | |
if prev == 0: | |
prev = point | |
start = point | |
continue | |
else: | |
diff = point.time_difference(start) | |
if diff < args.start or diff > args.end: | |
prev = point | |
continue | |
speed = point.speed_between(prev) | |
if speed != None: | |
start_time = pysrt.SubRipTime(seconds=point.time_difference(start) - args.start) | |
speed = point.speed_between(prev) * 3.6 | |
item = pysrt.SubRipItem(start=start_time, text="speed: %f" % | |
speed, index=index) | |
index += 1 | |
sub.append(item) | |
prev = point | |
sub.save() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment