source /mod/var/mongoose/lib/setup if {![exists -proc class ]} { package require oo } if {![exists -proc sqlite3.open ]} { package require sqlite3 } if {![exists -proc settings ]} { require settings.class } require progressbar set ::channeldb 0 catch { set ::channeldb [sqlite3.open /var/lib/humaxtv/channel.db] } set ::epgpath /mnt/hd1/dvbepg/epg.dat set ::hdepgpath /media/drive1/epgsavedata if {![file exists $::epgpath] && [file exists $::hdepgpath]} { set ::epgpath $::hdepgpath } # * 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 "" } epg method _parse {line} { set vars [split $line "\t"] set service_id [lindex $vars 0] set event_id [lindex $vars 1] set start [lindex $vars 2] set duration [lindex $vars 3] set encrypted [lindex $vars 4] set name [lindex $vars 5] set text [lindex $vars 6] set warning [lindex $vars 7] set content_code [lindex $vars 8] set content_type [lindex $vars 9] set event_crid [lindex $vars 10] set series_crid [lindex $vars 11] set rec_crid [lindex $vars 12] } 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 percent [$self percent] if {$percent > 0 && $percent < 100} { return 1 } else { 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 type_icon {} { set img "" switch -- [$self get 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 from TBL_SVC where usSvcId = %s} "[$self get 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)] } } } 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 "" } if {[$self get rec_crid] != ""} { lappend set \ "" } if {[$self get series_crid] != ""} { lappend set \ "" } return $set } epg method cell {} { set name [$self get name] set text [$self get text] set percent [$self percent] puts "