webif/var/mongoose/cgi-bin/status.jim

114 lines
2.5 KiB
Plaintext
Raw Normal View History

#!/mod/bin/jimsh
source /mod/webif/lib/setup
require system.class findhsvc epg.class
puts "Content-Type: text/html"
puts "Pragma: no-cache"
puts "Expires: Thu, 01 Jan 1970 00:00:00 GMT"
puts ""
if {[catch {set pid [exec pgrep humaxtv]}]} {
puts "Cannot find humaxtv process."
exit
}
proc get_data {} {
global pid
set ret {}
if {[catch {set data \
[exec /mod/bin/lsof -p $pid | grep Video | fgrep .ts]} ]} {
set ret {}
} else {
foreach line [split $data "\n"] {
regsub -all -- {[[:space:]]+} $line " " line
set name [file rootname [file tail $line]]
if {[dict exists $ret $name]} {
set ret($name) -1
} else {
set size [lindex [split $line " "] 6]
set ret($name) $size
}
}
}
return $ret
}
set play 0
set rec 0
set seen {}
set output {}
set data [get_data]
if {[llength $data]} {
sleep 2
set ndata [get_data]
foreach name [array names ndata] {
if {![dict exists $seen $name]} { set seen($name) 0 }
if {![dict exists $data $name]} { set data($name) 0 }
if {$ndata($name) == -1} {
incr rec
incr play
set mode "Chase Playing"
set icon "745_1_11_Video_3REC_Live.png"
} elseif {$ndata($name) > $data($name) && $seen($name) < 1} {
incr rec
set mode "Recording"
set icon "745_1_11_Video_1REC.png"
} else {
incr play
set mode "Playing"
set icon "745_1_10_Video_2Live.png"
}
incr seen($name)
lappend output "<img class=va src=/images/$icon><span class=va>
$mode&nbsp;<i>$name</i></span>"
}
}
if {![system instandby] && $play < 1} {
set hsvc [system param CUR_SVC Value USERCONFIG]
set ff [$rsvdb query "
select usSvcid as svcid, usLcn as lcn,
substr(szSvcName, 2) as name
from channel.TBL_SVC
where hSvc = $hsvc
limit 1
"]
if {[llength $ff] == 1} {
lassign [lindex $ff 0] x svcid x lcn x name
set epgs [epg dbfetch get \
-service $svcid \
-time [clock seconds]\
]
set prog ""
if {[llength $epgs] == 1} {
lassign $epgs epg
set prog "- [$epg get name] ("
append prog "[clock format [$epg get start] -format %H:%M] - "
append prog "[clock format $([$epg get start] + [$epg get duration]) -format %H:%M]"
append prog ") \[[$epg percent]%\]"
}
lappend output "[epg channelicon $name 30 \
{vertical-align: middle; padding: 0 4px 0 2px}]
<span class=va> Watching <i>$lcn: $name $prog</i></span>"
}
}
if {[system instandby]} {
lappend output "<img class=va width=28 style=\"padding: 0 4px\"
src=/img/standby.png>
<span class=va>System is in standby.</span>"
}
if {[llength $output]} {
puts [join $output "<br>"]
}