1#!/usr/local/bin/python3.8 2 3#usage: 4# 5# vobshift.py in.idx out.idx -8.45 6# 7# this will read in in.idx,shift it by 8.45 seconds back, 8# and save it as out.idx 9# 10# license: i don't care ;) 11# 12 13import datetime 14import sys 15 16def tripletize(line): 17 begin = line[:11] 18 middle = line[11:23] 19 end = line[23:] 20 return (begin,middle,end) 21 22def text2delta(t): 23 h = int( t[0:2] ) 24 m = int( t[3:5] ) 25 s = int( t[6:8] ) 26 milli = int( t[9:12] ) 27 return datetime.timedelta(hours=h,minutes=m,seconds=s,milliseconds=milli) 28 29def delta2text(d): 30 t = str(d) 31 milli = t[8:11] 32 if len(milli) == 0: #fix for .000 seconds 33 milli = '000' 34 return '0'+t[:7]+':'+milli 35 36def shift(line,seconds): 37 triplet = tripletize(line) 38 39 base = text2delta(triplet[1]) 40 base = base + datetime.timedelta(seconds=seconds) 41 base = delta2text(base) 42 43 return triplet[0]+base+triplet[2] 44 45INFILE =sys.argv[1] 46OUTFILE =sys.argv[2] 47DIFF =float(sys.argv[3]) 48 49o = open(OUTFILE,'wt') 50 51 52for line in open(INFILE): 53 if line.startswith('timestamp'): 54 line = shift(line,DIFF) 55 56 o.write(line) 57 58o.close() 59