# srt-offset.py
# offset srt timestamp
import sys
import re
if len(sys.argv) < 3:
print("usage: " + sys.argv[0] + " <srt file> <timestamp adjust (sec)>")
exit()
filename = sys.argv[1]
sec = int(float(sys.argv[2]))
msec = int((float(sys.argv[2])-sec)*1000)
#print(sec, msec)
f = open(filename, "r")
lines = f.readlines()
y = (2,3,4)
# format: 00:56:44,621 --> 00:56:49,998
r = re.compile(r'(..):(..):(..),(...) --> (..):(..):(..),(...)')
for l in lines:
if l.find(' --> ') > 0 :
m = r.search(l)
g = list(m.groups())
for i in range(0,len(g)):
g[i] = int(g[i])
g[3] = msec
g[2] = sec
if g[3]%1000 != g[3]:
g[2] = (g[3] - g[3]%1000)/1000
g[3] = g[3]%1000
if g[2]%60 != g[2]:
g[1] = (g[2] - g[2]%60)/60
g[2] = g[2]%60
if g[1]%60 != g[1]:
g[0] = (g[1] - g[1]%60)/60
g[1] = g[1]%60
g[7] = msec
g[6] = sec
if g[7]%1000 != g[7]:
g[6] = (g[7] - g[7]%1000)/1000
g[7] = g[7]%1000
if g[6]%60 != g[6]:
g[5] = (g[6] - g[6]%60)/60
g[6] = g[6]%60
if g[5]%60 != g[5]:
g[4] = (g[5] - g[5]%60)/60
g[5] = g[5]%60
# print('*', end='')
l = "%02d:%02d:%02d,%03d --> %02d:%02d:%02d,%03d\n" % tuple(g)
print(l, end='')
My tech exploits. Nah... closer to a tech diary, and work log, so if I forget something, but know I forgot, I'll maybe be able to look it up here. And as a bonus, perhaps someone out there will find it useful or interesting. As is only fair, being nearly all the information put here was gleaned from elsewhere on the web.
Friday, June 24, 2011
srt subtitle offset delay adjust fix utility
A quick and dirty basic python utility to adjust delay offset all the timestamps in a .srt (subtitle) file by a fixed number of seconds or fractions of a second.
I know there are other .srt subtitle utilities, with far more functionality, and I have used them in the past. Since I only needed one basic function for what I want to do, I thought throwing this together would be just as fast as searching for it on the web or transferring .srt and video files to the other computer where I have subtitle editing utilities installed, .
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment