Smi2srt

Bizen | Recent Changes | Preferences

#!/usr/bin/tclsh
#
# Single argument is name of input .smi file
#
# Written by Phil Ehrens for transcoding.org
#

set file [ lindex $argv 0 ]

set fid [ open $file r ]
set data [ read $fid [ file size $file ] ]
close $fid
set data [ split $data "\n" ]

set i 1
foreach line $data {
   if { [ string equal -nocase <body> $line ] } {
      break
   }
   incr i
}

proc conv { msecs } {
     set timeatoms [ list ]
     foreach div { 3600000 60000 1000 1 } mod { 24 60 60 1000 } {
        set n [ expr {$msecs / $div} ]
        if { $mod > 0 } { set n [ expr {$n % $mod} ] }
        if { [ string equal 0 $n ] } { set n 00 }
        if { [ string length $n ] == 1 } { set n 0$n }
        lappend timeatoms $n
     }
     set stamp [ join [ lrange $timeatoms 0 2 ] : ]
     set ms [ lindex $timeatoms 3 ]
     if { [ string length $ms ] == 2 } { set ms 0$ms }
     set stamp $stamp,$ms
     return $stamp
}

set j 0
foreach [ list st txt et ] [ lrange $data $i end ] {
   if { [ string equal -nocase </body> $st ] } { exit }
   regexp {Start=(\d+)} $st -> st
   regsub -all {<br>} $txt "\n" txt
   regexp {Start=(\d+)} $et -> et
   puts "[ incr j ]\n[ conv $st ] --> [ conv $et ]\n$txt\n"
}

Bizen | Recent Changes | Preferences

Last edited December 23, 2010 2:19 pm by Pokute
Search Bizen: