#!/usr/bin/python """Adjust speed of .srt subtitle files to compensate for a constant factor.""" import os import re import sys def to_seconds(hours, minutes, seconds): return (float(seconds.replace(',', '.')) + 60 * (float(minutes) + 60 * float(hours))) def hours_of(seconds): return int(seconds / 3600) def minutes_of(seconds): return int(seconds / 60) % 60 def seconds_of(seconds): return seconds % 60 speed_factor = float(sys.argv[1]) # e.g. 0.95676 for line in sys.stdin: mo = re.match(r'(\d\d):(\d\d):([\d,]+) --> (\d\d):(\d\d):([\d,]+)', line) if mo: start = to_seconds(mo.group(1), mo.group(2), mo.group(3)) * speed_factor end = to_seconds(mo.group(4), mo.group(5), mo.group(6)) * speed_factor print '%02d:%02d:%02.3f --> %02d:%02d:%02.3f' % (hours_of(start), minutes_of(start), seconds_of(start), hours_of(end), minutes_of(end), seconds_of(end)) else: sys.stdout.write(line)