webif/var/mongoose/lib/ts.class

124 lines
2.3 KiB
Plaintext
Raw Normal View History

if {[expr ! [exists -proc class ]]} { package require oo }
class ts {
file ""
base ""
title ""
synopsis ""
definition ""
channel_num 0
channel_name ""
start 0
end 0
flags ""
error ""
guidance ""
}
ts method duration {} {
return [expr [expr $end - $start] / 60]
}
ts method size {} {
file stat $file st
return $st(size)
}
ts method _parse {line} {
set vars [split $line "\t"]
set title [lindex $vars 0]
set synopsis [lindex $vars 1]
set definition [lindex $vars 2]
set channel_num [lindex $vars 3]
set channel_name [lindex $vars 4]
set start [lindex $vars 5]
set end [lindex $vars 6]
set flags [split [string range [lindex $vars 7] 0 end-1] ,]
set guidance [lindex $vars 8]
}
ts method flag {f} {
if {$f in $flags} {return 1} else {return 0}
}
ts method unlock {} {
set cmd [list /mod/bin/hmt -lock $file]
#puts "CMD: $cmd"
exec {*}$cmd
return 1
}
ts method lock {} {
set cmd [list /mod/bin/hmt +lock $file]
#puts "CMD: $cmd"
exec {*}$cmd
return 1
}
ts method setfile {f} { set file $f }
proc {ts parse} {file line} {
set e [ts new]
$e setfile $file
$e _parse $line
return $e
}
proc {ts exec} {file} {
set raw 0
set cmd [list /mod/bin/hmt]
lappend cmd "-p"
lappend cmd $file
#puts "CMD -$cmd-"
return [exec {*}$cmd]
}
proc {ts fetch} {file {checked 0}} {
# Check that this is a .ts file which has at least one sidecar
# file (.nts)
if {!$checked} {
if {[file extension $file] ne ".ts"} { return 0 }
if {![file exists "[file rootname $file].nts"]} { return 0 }
}
return [ts parse $file [ts exec $file]]
}
ts method delete {} {
# Extract file basename
foreach f [glob -nocomplain "[file rootname $file].*"] {
puts "Removed $f<br>"
file delete $f
}
return 1
}
ts method settitle {newtitle} {
if {[string length newtitle] > 48} { return }
exec /mod/bin/hmt "+settitle=${newtitle}" $file
}
proc {ts renamegroup} {from to} {
set dir [file dirname $from]
set root [file rootname $from]
# Catch from string without a . character in it
if {$root eq $from} { return }
# Protect special characters in root. In particular [] characters
# which are used a lot for torrent names.
regsub -all {([\\["$])} $root {\\\1} root
foreach f [glob -nocomplain "${root}.*"] {
set ext [file extension $f]
#puts "rename $f \"${dir}/${to}${ext}\""
file rename $f "${dir}/${to}${ext}"
}
}