Commit | Line | Data |
---|---|---|
a7032083 JC |
1 | import argparse |
2 | import datetime | |
3 | import sys | |
4 | import re | |
5 | ||
6 | def 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 | ||
18 | parser = argparse.ArgumentParser(description='Adjust timestamps in a .srt file') | |
19 | parser.add_argument('--minutes', '-m', nargs='?', type=int, default=0) | |
20 | parser.add_argument('--seconds', '-s', nargs='?', type=int, default=0) | |
21 | args = parser.parse_args() | |
22 | ||
23 | delta = datetime.timedelta(minutes=args.minutes, seconds=args.seconds) | |
24 | for line in sys.stdin: | |
25 | sys.stdout.write(get_new_line(line, delta)) |