#!/mod/bin/jimsh source /mod/var/mongoose/lib/setup require system.class findhsvc epg.class puts "Content-Type: text/html" 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]] set size [lindex [split $line " "] 6] set ret($name) $size } } return $ret } set play 0 set rec 0 set seen {} 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) > $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 " $mode $name" } } 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}] Watching $lcn: $name $prog" } } if {[llength $output]} { puts [join $output "
"] }