source /mod/webif/lib/setup if {![exists -proc class]} { package require oo } if {![exists -proc sqlite3.open]} { package require sqlite3 } require settings.class progressbar rsv.class mwildcard set ::epgpath /mnt/hd1/dvbepg/epg.dat set ::epgdbpath /mnt/hd1/epg.db set ::hdepgpath /media/drive1/epgsavedata if {![file exists $::epgpath] && [file exists $::hdepgpath]} { set ::epgpath $::hdepgpath set ::epgdbpath /media/drive1/epg.db } set ::channeldb 0 set ::qepg 0 catch { set ::channeldb [sqlite3.open /var/lib/humaxtv/channel.db] } if {[file exists $::epgdbpath]} { $::channeldb query {attach database '%s' as epg} $::epgdbpath set ::qepg 1 } # * service_id, event_id, start, duration, encrypted, name, text # * warning, content code, content type, # * event CRID, series CRID, rec CRID class epg { service_id 0 event_id 0 start 0 duration 0 encrypted 0 name "" text "" warning "" content_code 0 content_type "" event_crid "" series_crid "" rec_crid "" channel_num 0 channel_name "" channel_crid "" channel_hsvc 0 sched_type -1 rsv 0 } epg method _parse {line} { lassign [split $line "\t"] \ service_id event_id start duration encrypted name text warning \ content_code content_type event_crid series_crid rec_crid } epg method percent {} { set now [clock seconds] if {$start > $now} { return 0 } if {$start + $duration < $now} { return 100 } return [expr [expr $now - $start] * 100 / $duration] } epg method showing {} { set now [clock seconds] if {$start > $now} { return 0 } if {$start + $duration < $now} { return 0 } return 1 } epg method ended {} { if {$start + $duration < [clock seconds]} { return 1 } return 0 } epg method elapsed {} { set percent [$self percent] if {$percent == 0} { return 0 } if {$percent == 100} { return $duration } return [expr $duration * $percent / 100] } epg method remaining {} { return [expr $duration - [$self elapsed]] } epg method end {} { return $($start + $duration) } epg method type_icon {} { set img "" switch -- $content_code { 1 { set img "Movie" } 2 { set img "News" } 3 { set img "Show" } 4 { set img "Sports" } 5 { set img "Children" } 6 { set img "Music" } 7 { set img "Art" } 8 { set img "Society" } 9 { set img "Education" } 10 { set img "Leisure" } } if {$img != ""} { return "/images/173_3_00_G3_$img.png" } else { return "" } } proc {epg channelicon} {name {width 0} {style ""}} { set str " 0} { append str " width=$width" } if {$style ne ""} { append str " style=\"$style\" } append str " alt=\"\">" return $str } epg method channel_icon {{width 0} {style ""}} { set str " 0} { append str " width=$width" } if {$style ne ""} { append str " style=\"$style\" } append str " alt=\"\">" return $str } epg method get_channel_info {} { global channeldb if {!$channel_num && $channeldb != ""} { set chan [lindex [$channeldb query { select szSvcName, usLcn, aucDefaultAuthority, hsvc from TBL_SVC where usSvcId = '%s'} $service_id ] 0] if {[dict exists $chan usLcn]} { set channel_num $chan(usLcn) set channel_name [string range $chan(szSvcName) 1 end] set channel_crid [string toupper $chan(aucDefaultAuthority)] set channel_hsvc $chan(hSvc) } } } epg method copy_channel_info {s} { set channel_num [$s get channel_num] set channel_name [$s get channel_name] set channel_crid [$s get channel_crid] set channel_hsvc [$s get channel_hsvc] } epg method get_rsv {} { if {$hsvc == 0} { $self get_channel_info } if {$hsvc == 0} { return } if {$rsv == 0 && $event_crid ne ""} { set rsv [rsv entry $event_crid $hsvc] } if {$rsv == 0 && $series_crid ne ""} { set rsv [rsv entry $series_crid $hsvc] } } epg method process_sched {} { $self scheduled } set rsvlookup "" epg method scheduled {} { global rsvlookup if {$sched_type >= 0} { return $sched_type } set sched_type 0 if {$rsvlookup eq ""} { set rsvlookup [rsv lookuptab] #puts $rsvlookup } set p 0 foreach key [list \ "$service_id:$event_id" \ [string tolower "$service_id:$channel_crid$series_crid"] \ [string tolower "$service_id:$channel_crid$event_crid"] \ ] { #puts "Check key ($key)" if {[dict exists $rsvlookup $key]} { set p $rsvlookup($key) #puts "FOUND ($p)" break } } switch $p { S { set sched_type 2 } E { set sched_type 1 } default { set sched_type 0 } } #puts "SCHED_TYPE: ($sched_type)" return $sched_type } epg method icon_set {{height 0}} { if {$height > 0} { set height "height=$height" } else { set height "" } set icon [$self type_icon] set set "" if {$icon != ""} { lappend set "" } $self process_sched if {$sched_type == 1} { lappend set \ "" } if {$sched_type == 2} { lappend set \ "" } elseif {$series_crid ne ""} { lappend set \ "" } if {$rec_crid ne ""} { lappend set \ "" } if {[string match {/*#?} $event_crid]} { lappend set \ "" } return $set } epg method cell {} { set percent [$self percent] puts "