forked from hummypkg/webif
d05632e8d3
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1210 2a923420-c742-0410-a762-8d5b09965624
216 lines
4.4 KiB
Plaintext
Executable File
216 lines
4.4 KiB
Plaintext
Executable File
#!/mod/bin/jimsh
|
|
|
|
package require cgi
|
|
source /mod/webif/lib/setup
|
|
require ts.class pretty_size system.class settings.class escape browse.class
|
|
|
|
cgi_input
|
|
|
|
set ignore {.nts .thm .hmi}
|
|
set include {.ts .avi .mpg .mpeg .wmv .mkv .mp3 .mp4 .mov .hmt}
|
|
|
|
set dir [cgi_get dir [system mediaroot]]
|
|
|
|
set model [system model]
|
|
set dustbin [system dustbin 1]
|
|
set order [[settings new] sortorder]
|
|
|
|
proc icon {img {hover ""} {extra ""} {class "va"}} {
|
|
puts -nonewline "<img src=$img class=\"$class\" height=21 $extra"
|
|
if {$hover ne ""} {
|
|
puts -nonewline " alt=\"$hover\" title=\"$hover\""
|
|
}
|
|
puts ">"
|
|
}
|
|
|
|
proc directory {file bfile tbfile {img /images/711_1_09_Media_Folder.png}} {
|
|
if {$bfile eq $::dustbin} { set img "/img/Dustbin_Folder.png" }
|
|
lassign [{dir iconset} $file] icons attrs
|
|
puts "<li><a href=\"browse.jim?dir=[cgi_quote_url $file]\"
|
|
data-transition=flip>
|
|
<img src=$img border=0 class=va width=80 id=\"img$tbfile\">
|
|
<h3>$bfile</h3>
|
|
"
|
|
if {[llength $icons]} {
|
|
puts "<p>[join $icons ""]</p>"
|
|
}
|
|
puts "<p class=ui-li-count>
|
|
<span class=filesize id=\"$tbfile\"></span>
|
|
</p>
|
|
</a></li>
|
|
"
|
|
}
|
|
|
|
proc entry {file {i 0}} {
|
|
set bfile [file tail $file]
|
|
regsub -all " +" $bfile "" tbfile
|
|
if {[string index $bfile 0] == "\025"} {
|
|
set bfile [string range $bfile 1 end]
|
|
}
|
|
if [file isdirectory "$file"] {
|
|
directory $file $bfile $tbfile
|
|
return
|
|
}
|
|
set ext [file extension $file]
|
|
if {$ext in $::ignore || $ext ni $::include} { return }
|
|
|
|
file stat $file st
|
|
set rsz $st(size)
|
|
set sz [pretty_size $rsz]
|
|
|
|
set base [file rootname $file]
|
|
|
|
if {$ext eq ".ts" && [file exists "${base}.nts"]} {
|
|
set type ts
|
|
set ts [ts fetch $file 1]
|
|
set img Video_TS
|
|
set omenu opt
|
|
} elseif {$ext eq ".hmt"} {
|
|
if {[file exists "${base}.ts"]} { continue }
|
|
# Sole hmt file indicates failure to track.
|
|
set type bad
|
|
set ts 0
|
|
set img Video_Failed
|
|
set omenu oopt
|
|
} else {
|
|
set type gen
|
|
set ts 0
|
|
set img Video_Other
|
|
set omenu oopt
|
|
}
|
|
|
|
set new 0
|
|
if {$type eq "ts"} {
|
|
if {[$ts flag "New"] > 0} { set new 1 }
|
|
} elseif {$type eq "gen"} {
|
|
if {![file exists "${base}.hmi"]} { set new 1 }
|
|
}
|
|
|
|
if {$new} { append img _New }
|
|
|
|
set fscl "fs"
|
|
set synopsis ""
|
|
if {$type eq "ts"} {
|
|
set fscl "fs fsts"
|
|
set synopsis [cgi_quote_html [$ts get synopsis]]
|
|
}
|
|
|
|
puts "<li>
|
|
<img class=va border=0 width=80 src=/img/$img.png>
|
|
<h3>$bfile</h3>
|
|
<p class=ui-li-count>
|
|
<span class=filesize> $sz </span>
|
|
</p>
|
|
<p class=icons>
|
|
"
|
|
|
|
# Icons
|
|
|
|
set locked 0
|
|
set encd 0
|
|
set odencd 1
|
|
set def unknown
|
|
set bx 0
|
|
set dlna 0
|
|
if {$type eq "ts"} {
|
|
# HD / SD
|
|
if {[$ts get definition] eq "HD"} {
|
|
set def HD
|
|
set img "172_1_00_HD"
|
|
} else {
|
|
set def SD
|
|
set img "172_1_26_SD"
|
|
}
|
|
icon "/images/$img.png"
|
|
|
|
# Locked
|
|
if {[$ts flag "Locked"] > 0} {
|
|
set locked 1
|
|
icon "/images/178_1_00_Icon_Lock.png" "Locked"
|
|
}
|
|
|
|
# Encrypted
|
|
if {[$ts flag "Encrypted"] > 0} {
|
|
set encd 1
|
|
icon "/images/749_1_26_Video_Encryption.png" ""
|
|
}
|
|
if {![$ts flag "ODEncrypted"]} {
|
|
set odencd 0
|
|
icon "/img/Decrypted.png" "Decrypted"
|
|
}
|
|
|
|
# Guidance
|
|
if {[$ts flag "Guidance"] > 0} {
|
|
icon "/images/174_1_26_GuidancePolicy.png"
|
|
}
|
|
|
|
# Indexed
|
|
if {$::model eq "HDR" && [llength [$ts dlnaloc]]} {
|
|
icon "/img/dlna.png" "Indexed by DLNA Server"
|
|
set dlna 1
|
|
}
|
|
|
|
# Shrunk (shown when necessary via Ajax)
|
|
icon "/img/compress.png" "Shrunk" \
|
|
"id=\"sp_$tbfile\"" "va hidden"
|
|
}
|
|
|
|
puts "</p></li>"
|
|
}
|
|
|
|
mheader
|
|
|
|
puts "
|
|
<span class=\"dir hidden\">$dir</span>
|
|
<ul data-role=listview data-filter=true data-count-theme=e>
|
|
<li data-role=list-divider>$dir
|
|
<p class=ui-li-count>
|
|
<span class=\"filesize dirsize\"></span>
|
|
</p>
|
|
</li>
|
|
"
|
|
|
|
# Parent directory
|
|
directory [join [lrange [split $dir /] 0 end-1] /] "\[parent directory\]" \
|
|
_parent "/images/711_3_09_Media_Folder_UP.png"
|
|
|
|
proc s_time {a b} {
|
|
global dir
|
|
|
|
set a "$dir/$a"
|
|
set b "$dir/$b"
|
|
|
|
set ad [file isdirectory $a]
|
|
set bd [file isdirectory $b]
|
|
|
|
if {$ad && !$bd} { return -1 }
|
|
if {$bd && !$ad} { return 1 }
|
|
if {$ad && $bd} {
|
|
if {$a < $b} { return -1 }
|
|
if {$a > $b} { return 1 }
|
|
return 0
|
|
}
|
|
|
|
if {[catch {file stat $a l}]} { return 0}
|
|
set at $l(ctime)
|
|
if {[catch {file stat $b l}]} { return 0}
|
|
set bt $l(ctime)
|
|
|
|
if {$at < $bt} { return -1 }
|
|
if {$at > $bt} { return 1 }
|
|
return 0
|
|
}
|
|
|
|
set files [readdir -nocomplain $dir]
|
|
switch $order {
|
|
1 { set files [lsort -command s_time $files] }
|
|
default { set files [lsort $files] }
|
|
}
|
|
|
|
foreach file $files { entry "$dir/$file" }
|
|
|
|
puts "</ul>"
|
|
|
|
mfooter
|
|
|