Changeset 1132
- Timestamp:
- 2005-03-15 01:14:14 (4 years ago)
- Files:
-
- scripts/trunk/srttool.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
scripts/trunk/srttool.py
r1131 r1132 1 1 #!/usr/bin/env python 2 3 # Originally 4 # http://www.dwerg.net/projects/python/srttool.py 2 5 3 6 import re … … 11 14 pass 12 15 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 16 def timeformat(times): 17 return "%02d:%02d:%02d.%03d" % tuple(times) 24 18 25 def timeformat(times): 26 return "%02d:%02d:%02d,%03d" % tuple(times) 27 28 def fix_times(line, hours, minutes, seconds, millis): 19 def get_times(line): 29 20 parts = line.split('-->') 30 21 try: 31 22 time1 = timeRe.match(parts[0].strip()) 32 23 time2 = timeRe.match(parts[1].strip()) 24 33 25 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']), 38 30 ] 39 timear1 = fix_overflow(timear1)40 31 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']), 45 36 ] 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)) 48 39 except IndexError: 49 40 raise CorruptSrtError("Corrupt time format") … … 51 42 52 43 53 def fix_block(lines, hours, minutes, seconds, millis, blockcount): 54 print blockcount 55 fix_times(lines[1], hours, minutes, seconds, millis) 44 def 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>' 56 50 for line in lines[2:]: 57 print line 58 print '' 51 print ' ' + line 52 print ' </desc>' 53 print '</clip>' 59 54 60 def fix_srt(file, hours, minutes, seconds, millis, startline=0):55 def convert_clips(file): 61 56 current = [] 62 blockcount = startline63 57 for line in file: 64 58 if not line.strip(): 65 fix_block(current, hours, minutes, seconds, millis, blockcount) 66 blockcount += 1 59 convert_block(current) 67 60 current = [] 68 61 else: 69 62 current.append(line.strip()) 70 63 64 def convert_srt(file): 65 print '<cmml>' 66 print '<head/>' 67 convert_clips (file) 68 print '</cmml>' 69 71 70 if __name__ == '__main__': 72 71 import sys 73 72 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])) 82 74 except IndexError: 83 print "Usage: %s file <+hours> <+minutes> <+seconds> <+milliseconds> <+counter>" % sys.argv[0]75 print "Usage: %s file" % sys.argv[0] 84 76