Changeset 1132

Show
Ignore:
Timestamp:
2005-03-15 01:14:14 (4 years ago)
Author:
conrad
Message:

refactor srttool into an srt -> cmml converter

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • scripts/trunk/srttool.py

    r1131 r1132  
    11#!/usr/bin/env python 
     2 
     3# Originally 
     4# http://www.dwerg.net/projects/python/srttool.py 
    25 
    36import re 
     
    1114    pass 
    1215 
    13 def fix_overflow(times): 
    14     if times[3] > 999: 
    15         times[2] += 1 
    16         times[3] -= 1000 
    17     if times[2] > 59: 
    18         times[1] += 1 
    19         times[2] -= 60 
    20     if times[1] > 59: 
    21         times[0] += 1 
    22         times[1] -= 60 
    23     return times 
     16def timeformat(times): 
     17    return "%02d:%02d:%02d.%03d" % tuple(times) 
    2418 
    25 def timeformat(times): 
    26     return "%02d:%02d:%02d,%03d" % tuple(times) 
    27  
    28 def fix_times(line, hours, minutes, seconds, millis): 
     19def get_times(line): 
    2920    parts = line.split('-->') 
    3021    try: 
    3122        time1 = timeRe.match(parts[0].strip()) 
    3223        time2 = timeRe.match(parts[1].strip()) 
     24 
    3325        timear1 = [ 
    34                 int(time1.groupdict()['hours'])+hours
    35                 int(time1.groupdict()['minutes'])+minutes
    36                 int(time1.groupdict()['seconds'])+seconds
    37                 int(time1.groupdict()['millis'])+millis
     26                int(time1.groupdict()['hours'])
     27                int(time1.groupdict()['minutes'])
     28                int(time1.groupdict()['seconds'])
     29                int(time1.groupdict()['millis'])
    3830            ] 
    39         timear1 = fix_overflow(timear1) 
    4031        timear2 = [ 
    41                 int(time2.groupdict()['hours'])+hours
    42                 int(time2.groupdict()['minutes'])+minutes
    43                 int(time2.groupdict()['seconds'])+seconds
    44                 int(time2.groupdict()['millis'])+millis
     32                int(time2.groupdict()['hours'])
     33                int(time2.groupdict()['minutes'])
     34                int(time2.groupdict()['seconds'])
     35                int(time2.groupdict()['millis'])
    4536            ] 
    46         timear2 = fix_overflow(timear2
    47         print "%s --> %s" % (timeformat(timear1), timeformat(timear2)) 
     37        #print "%s --> %s" % (timeformat(timear1), timeformat(timear2)
     38        return (timeformat(timear1), timeformat(timear2)) 
    4839    except IndexError: 
    4940        raise CorruptSrtError("Corrupt time format") 
     
    5142     
    5243 
    53 def fix_block(lines, hours, minutes, seconds, millis, blockcount): 
    54     print blockcount 
    55     fix_times(lines[1], hours, minutes, seconds, millis) 
     44def convert_block(lines): 
     45    id='c' + lines[0] 
     46    #fix_times(lines[1], hours, minutes, seconds, millis) 
     47    (start, end) = get_times(lines[1]) 
     48    print '<clip id="%s" start="%s" end="%s">' % (id, start, end) 
     49    print '  <desc>' 
    5650    for line in lines[2:]: 
    57         print line 
    58     print '' 
     51        print '    ' + line 
     52    print '  </desc>' 
     53    print '</clip>' 
    5954 
    60 def fix_srt(file, hours, minutes, seconds, millis, startline=0): 
     55def convert_clips(file): 
    6156    current = [] 
    62     blockcount = startline 
    6357    for line in file: 
    6458        if not line.strip(): 
    65             fix_block(current, hours, minutes, seconds, millis, blockcount) 
    66             blockcount += 1 
     59            convert_block(current) 
    6760            current = [] 
    6861        else: 
    6962            current.append(line.strip()) 
    7063 
     64def convert_srt(file): 
     65    print '<cmml>' 
     66    print '<head/>' 
     67    convert_clips (file) 
     68    print '</cmml>' 
     69 
    7170if __name__ == '__main__': 
    7271    import sys 
    7372    try: 
    74         fix_srt( 
    75             file(sys.argv[1]), 
    76             int(sys.argv[2]), 
    77             int(sys.argv[3]), 
    78             int(sys.argv[4]), 
    79             int(sys.argv[5]), 
    80             int(sys.argv[6]), 
    81         ) 
     73        convert_srt(file(sys.argv[1])) 
    8274    except IndexError: 
    83         print "Usage: %s file <+hours> <+minutes> <+seconds> <+milliseconds> <+counter>" % sys.argv[0] 
     75        print "Usage: %s file" % sys.argv[0] 
    8476