2011-06-07 13:26:45 +00:00
|
|
|
#!/mod/bin/jimsh
|
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
source /mod/var/mongoose/lib/setup
|
|
|
|
require system.class findhsvc epg.class
|
|
|
|
|
2011-06-07 14:45:01 +00:00
|
|
|
puts "Content-Type: text/html"
|
|
|
|
puts ""
|
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
if {[catch {set pid [exec pgrep humaxtv]}]} {
|
|
|
|
puts "Cannot find humaxtv process."
|
|
|
|
exit
|
2011-06-07 13:26:45 +00:00
|
|
|
}
|
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
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]]
|
2012-04-18 22:46:21 +00:00
|
|
|
if {[dict exists $ret $name]} {
|
|
|
|
set ret($name) -1
|
|
|
|
} else {
|
|
|
|
set size [lindex [split $line " "] 6]
|
|
|
|
set ret($name) $size
|
|
|
|
}
|
2012-04-18 20:26:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return $ret
|
2011-06-07 13:26:45 +00:00
|
|
|
}
|
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
set play 0
|
|
|
|
set rec 0
|
|
|
|
set seen {}
|
2012-04-22 20:54:29 +00:00
|
|
|
set output {}
|
2011-06-07 13:26:45 +00:00
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
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 }
|
2012-04-18 22:46:21 +00:00
|
|
|
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} {
|
2012-04-18 20:26:34 +00:00
|
|
|
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"
|
|
|
|
}
|
2011-06-07 13:26:45 +00:00
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
incr seen($name)
|
|
|
|
|
|
|
|
lappend output "<img class=va src=/images/$icon><span class=va>
|
2012-04-18 22:46:21 +00:00
|
|
|
$mode <i>$name</i></span>"
|
2011-06-07 13:26:45 +00:00
|
|
|
}
|
2012-04-18 20:26:34 +00:00
|
|
|
}
|
2011-06-07 13:26:45 +00:00
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
if {![system instandby] && $play < 1} {
|
|
|
|
set hsvc [system param CUR_SVC Value USERCONFIG]
|
2011-06-07 13:26:45 +00:00
|
|
|
|
2012-04-18 20:26:34 +00:00
|
|
|
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}]
|
2012-04-18 22:46:21 +00:00
|
|
|
<span class=va> Watching <i>$lcn: $name $prog</i></span>"
|
2012-04-18 20:26:34 +00:00
|
|
|
}
|
2011-06-07 13:26:45 +00:00
|
|
|
}
|
|
|
|
|
2012-04-18 22:46:21 +00:00
|
|
|
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>"
|
|
|
|
}
|
|
|
|
|
2011-06-07 13:26:45 +00:00
|
|
|
if {[llength $output]} {
|
2012-04-18 20:26:34 +00:00
|
|
|
puts [join $output "<br>"]
|
2011-06-07 13:26:45 +00:00
|
|
|
}
|
|
|
|
|