#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import re
from datetime import datetime, timedelta

def adjust(expr, delay):
    m = re.match('(\d+):(\d+):(\d+),(\d+)', expr)
    if not m:
        return expr

    d = datetime(1,1,1, int(m.group(1)),
                        int(m.group(2)),
                        int(m.group(3)),
                        int(m.group(4)))
    d += timedelta(0, delay)
    return '%02d:%02d:%02d,%03d' % (d.hour, d.minute, d.second, d.microsecond)

def main(argv):
    if len(argv) < 4:
        print >>sys.stderr, 'Syntax: %s in out delay' % argv[0]
        print >>sys.stderr, ''
        print >>sys.stderr, '- in: the .srt file to read'
        print >>sys.stderr, '- out: the .str file to write'
        print >>sys.stderr, '- delay: the delay to add to subtitles. It can be a float and a negative number'
        return 1

    f1 = open(argv[1], 'r')
    f2 = open(argv[2], 'w')
    delay = float(argv[3])

    high = 0
    for line in f1.readlines():
        m = re.match('(.*) --> (.*)', line)
        if m:
            first = adjust(m.group(1), delay)
            second = adjust(m.group(2), delay)
            f2.write('%s --> %s\n' % (first, second))
        else:
            f2.write('%s' % line)
        m = re.match('^(\d+)$', line.strip())
        if m and int(m.group(1)) > high:
            high = int(m.group(1))

    if delay > 0:
        f2.write('\n%d\n' % (high + 1))
        f2.write('00:00:00,000 --> %s\n' % adjust('00:00:00,000', delay))
        f2.write('Wesh bien ou quoi ?\n')

    f1.close()
    f2.close()

if __name__ == '__main__':
    sys.exit(main(sys.argv))

