#!/usr/bin/env python # # .srt subtitle timestamp adjuster, r1 import os, sys, re if len(sys.argv) < 4: print "syntax: %s in out msecs" % os.path.basename(sys.argv[0]) sys.exit() fi = open(sys.argv[1], "r") fo = open(sys.argv[2], "w") delay = int(sys.argv[3]) #00:00:59,860 --> 00:01:03,730 tsre = "(\\d\\d):(\\d\\d):(\\d\\d),(\\d\\d\\d)" pat = "%s --> %s[\n\r]+" % (tsre, tsre) mult = [3600*1000, 60*1000, 1000, 1] size = [100, 60, 60, 1000] for line in fi.readlines(): m = re.match(pat, line) if not m: fo.write(line) continue g = [int(x) for x in m.groups()] def decode(o): return sum([g[o+i] * mult[i] for i in range(4)]) ts0 = decode(0) + delay ts1 = decode(4) + delay def encode(ts): lst = [ts / mult[i] % size[i] for i in range(4)] return "%02d:%02d:%02d,%03d" % tuple(lst) fo.write("%s --> %s\n" % (encode(ts0), encode(ts1))) fi.close() fo.close()