Read an SRT file and adjust it by minutes + seconds
[srt-adjust.git] / timestamps.py
CommitLineData
a7032083
JC
1import argparse
2import datetime
3import sys
4import re
5
6def get_new_line(line, delta):
7 match = re.match('(\d{2}:\d{2}:\d{2},\d{3}) --> (\d{2}:\d{2}:\d{2},\d{3})', line)
8 if match:
9 start = match.group(1)
10 end = match.group(2)
11 start_time = datetime.datetime.strptime(start, '%H:%M:%S,%f')
12 end_time = datetime.datetime.strptime(end, '%H:%M:%S,%f')
13 new_start_time = start_time + delta
14 new_end_time = end_time + delta
15 return f"{new_start_time.strftime('%H:%M:%S,%f')[:-3]} --> {new_end_time.strftime('%H:%M:%S,%f')[:-3]}\n"
16 return line
17
18parser = argparse.ArgumentParser(description='Adjust timestamps in a .srt file')
19parser.add_argument('--minutes', '-m', nargs='?', type=int, default=0)
20parser.add_argument('--seconds', '-s', nargs='?', type=int, default=0)
21args = parser.parse_args()
22
23delta = datetime.timedelta(minutes=args.minutes, seconds=args.seconds)
24for line in sys.stdin:
25 sys.stdout.write(get_new_line(line, delta))