#!/usr/bin/tclsh
##################################################################################
# Ce script permet de générer un fichier telecable.xml qui ne contient que les
# chaînes désirées.
#
# Pour sélectionner les chaînes à inclure dans le nouveau fichier, il suffit de
# mettre un '1' à la place du '0' dans la liste ci-dessous, en regard du nom de
# chaîne concerné.
#
# Par défaut, les 6 chaînes nationnales sont sélectionnées.
# TF1, France 2, France 3, France 5, M6, Arte
#
# Ne modifiez surtout pas le premier nombre car le script ne fonctionnerait plus.
#
# (c) 2005 Trance007
##################################################################################

set fichier_original "epg.xml"
set fichier_allege "epg-light.xml"

proc init_chaines {} {
    global chaines_telecable
    set chaines_telecable {
{  2 "13ème Rue" 0}
{340 "2M Maroc" 0}
{  3 "3sat" 0}
{ 15 "AB Moteurs" 0}
{  5 "AB1" 0}
{254 "AB3" 0}
{303 "AB4" 0}
{ 10 "Action" 1}
{ 12 "Animaux" 1}
{ 13 "ARD" 0}
{111 "Arte" 1}
{ 16 "BBC 1" 0}
{ 17 "BBC 2" 0}
{ 18 "BBC Prime" 0}
{ 19 "BBC World" 0}
{ 29 "Be 1" 0}
{417 "Be Ciné 1" 0}
{418 "Be Ciné 2" 0}
{413 "Be Sport 1" 0}
{414 "Be Sport 2" 0}
{410 "Bloomberg TV" 0}
{321 "Boomerang" 1}
{ 32 "Canal J" 0}
{ 34 "Canal+" 0}
{ 33 "Canal+ Cinéma" 0}
{ 30 "Canal+ Décalé" 0}
{ 35 "Canal+ Sport" 0}
{ 36 "Cartoon Network" 0}
{318 "CCTV 9" 0}
{ 38 "Chasse et pêche" 0}
{288 "Ciné FX" 1}
{289 "Ciné Polar" 1}
{285 "CinéCinéma Auteur" 0}
{287 "CinéCinéma Classic" 0}
{437 "CinéCinéma Classic Belgique" 0}
{283 "CinéCinéma Emotion" 0}
{401 "CinéCinéma Famiz" 0}
{284 "CinéCinéma Frisson" 0}
{282 "CinéCinéma Premier" 0}
{294 "CinéCinéma Premier Belgique" 0}
{ 50 "Club RTL" 0}
{ 51 "CNBC Europe" 0}
{ 52 "CNBC Europe + Nat Geo" 0}
{ 53 "CNN" 0}
{ 54 "Comédie!" 0}
{239 "Cuisine TV" 0}
{ 57 "Demain" 0}
{ 61 "Deutsche Welle" 0}
{400 "Discovery Channel" 0}
{ 58 "Disney Channel" 0}
{299 "Disney Channel (+1)" 0}
{ 60 "DSF" 0}
{405 "E! Entertainment" 0}
{ 23 "één" 0}
{ 63 "Encyclopedia" 0}
{447 "English Premier League" 0}
{ 64 "Equidia" 0}
{ 67 "Escales" 1}
{272 "ESPN Classic Sport" 0}
{320 "Eurêka!" 1}
{140 "Euronews" 0}
{ 76 "Eurosport" 0}
{253 "Extrem Sport Channel" 0}
{ 78 "Festival" 0}
{403 "Filles TV" 0}
{  4 "France 2" 1}
{ 80 "France 3" 1}
{ 47 "France 5" 1}
{160 "France Ô" 1}
{ 86 "Fun TV" 0}
{ 87 "Game One" 0}
{251 "Gourmet TV" 0}
{ 88 "Histoire" 0}
{226 "I>Télévision" 0}
{ 94 "Infosport" 0}
{ 79 "Jetix" 0}
{ 96 "Jimmy" 0}
{108 "Kanaal 2" 0}
{ 24 "Ketnet-Canvas" 0}
{ 98 "Kiosque 1" 0}
{ 99 "Kiosque 10" 0}
{257 "Kiosque 11" 0}
{258 "Kiosque 12" 0}
{109 "Kiosque 13" 0}
{324 "Kiosque 14" 0}
{404 "Kiosque 15" 0}
{100 "Kiosque 2" 0}
{101 "Kiosque 3" 0}
{102 "Kiosque 4" 0}
{103 "Kiosque 5" 0}
{104 "Kiosque 6" 0}
{105 "Kiosque 7" 0}
{106 "Kiosque 8" 0}
{107 "Kiosque 9" 0}
{110 "KTO" 0}
{124 "La Chaîne Météo" 0}
{234 "La Chaîne Parlementaire" 0}
{187 "La Deux" 0}
{164 "La Une" 0}
{112 "LCI - La Chaîne Info" 0}
{ 65 "L'Equipe TV" 0}
{315 "Liberty TV" 0}
{118 "M6" 1}
{184 "M6 Boutique La Chaîne" 0}
{119 "M6 Music" 0}
{341 "Ma Planète" 0}
{  6 "Mangas" 0}
{266 "Match TV" 0}
{121 "MCM" 0}
{274 "MCM Belgique" 0}
{241 "MCM Pop" 0}
{343 "MCM Top" 0}
{125 "Mezzo" 0}
{237 "Motors TV" 0}
{264 "MTV 2" 0}
{263 "MTV Base" 0}
{128 "MTV France" 0}
{262 "MTV Hits" 0}
{126 "Multi music" 0}
{129 "Multivision 1" 1}
{130 "Multivision 2" 1}
{131 "Multivision 3" 1}
{132 "Multivision 4" 1}
{133 "Multivision 5" 1}
{134 "Multivision 6" 1}
{135 "Multivision 7" 1}
{136 "Multivision 8" 1}
{137 "Musique Classique" 0}
{243 "National Geographic" 0}
{375 "NBA+" 0}
{142 "Odyssée" 0}
{143 "ORF 1" 0}
{145 "Paris Première" 1}
{277 "Paris Première International" 0}
{406 "Pink TV" 0}
{344 "Piwi" 1}
{147 "Planète" 0}
{402 "Planète Choc" 0}
{302 "Planète Thalassa" 0}
{300 "Playhouse Disney" 0}
{377 "Plug TV" 0}
{416 "Private Gold" 0}
{152 "Pro 7" 0}
{154 "Rai Due" 0}
{155 "Rai Tre" 0}
{156 "Rai Uno" 0}
{411 "Reality TV" 0}
{141 "RFM TV" 0}
{292 "RTBF Sat" 0}
{166 "RTL +" 0}
{115 "RTL 9" 0}
{168 "RTL TVI" 0}
{169 "RTP Internacional" 0}
{415 "Sailing Channel" 0}
{172 "Sat 1" 0}
{173 "Seasons" 0}
{ 49 "Série Club" 0}
{ 59 "SF 1" 0}
{174 "SF 2" 0}
{  8 "Sport+" 0}
{182 "SWR" 0}
{185 "TCM" 0}
{186 "TCM (CH)" 0}
{265 "Télé Mélody" 0}
{197 "TéléToon" 1}
{293 "TéléToon (+1)" 1}
{191 "Téva" 1}
{192 "TF1" 1}
{228 "TF6" 1}
{322 "TFou" 1}
{229 "TiJi" 0}
{195 "TMC" 0}
{301 "Toon Disney" 0}
{  7 "Toute l'Histoire" 0}
{ 42 "TPS Ciné Culte" 1}
{332 "TPS Cinefamily" 1}
{178 "TPS Cinéstar" 1}
{ 73 "TPS Cinétoile" 1}
{333 "TPS Cinextreme" 1}
{331 "TPS Home Cinéma" 1}
{242 "TPS Star" 1}
{325 "Trace.TV" 0}
{200 "TSI 1" 0}
{201 "TSI 2" 0}
{202 "TSR 1" 0}
{183 "TSR 2" 0}
{225 "TV Breizh" 0}
{ 89 "TV1 - Nederland 1" 0}
{ 90 "TV2 - Nederland 2" 0}
{ 91 "TV3 - Nederland 3" 0}
{205 "TV5" 0}
{206 "TVE 1" 0}
{208 "TVE Internacional" 0}
{210 "VH1" 0}
{212 "Voyage" 0}
{214 "VT 4" 0}
{215 "VTM" 0}
{217 "WDR" 0}
{218 "XXL" 0}
{219 "ZDF" 0}
}
}

init_chaines
set chaines_out [list]
foreach {chaine} $chaines_telecable {
    foreach {idx nom flag} $chaine {
        if {$flag == 1} {lappend chaines_out $idx}
    }
}

set file_in [open $fichier_original]
set file_out [open $fichier_allege w]
set cpt 0

set write_line 1
while {1} {
    set ligne [gets $file_in]
    if {[eof $file_in]} {break}

    if {  [regexp {<channel id="C([0-9]+)\.lesagencestv.com">} $ligne dummy cur_channel]
       || [regexp {<programme start="[^"]+" stop="[^"]+" channel="C([0-9]+)\.lesagencestv.com">} $ligne dummy cur_channel] } {
        if {[lsearch $chaines_out $cur_channel] == -1} {
            set write_line 0
        } else {
            set write_line 1
        }
    }
    
    if {$write_line} {
        puts $file_out $ligne
    }
    
    if {[regexp {</channel>} $ligne] || [regexp {</programme>} $ligne]} {
        set write_line 1
    }
    
    incr cpt
    if {$cpt == 1000} {
        puts -nonewline "." 
        flush stdout
        set cpt 0
        update
    }
}

close $file_out
close $file_in
update
