#!/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"
}