| 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)) |