Copyright 2022 - Custom text here

create_epg_batch.pl

#!perl

use Time::Local;

use LWP::UserAgent;
use HTTP::Request::Common qw(POST);

$log_file = "E:\\docs\\epglog.html";
#$log_file = "C:\\temp\\epglog.html";

open(L, ">$log_file") || die ddie("Cannot open $log_file: $_<BR>\n");
print L "<HTML><HEAD><TITLE>EPG Creation from telepoche log</TITLE></HEAD><BODY>\n";


#$proxy = "http://192.168.81.147:8089";
$epg_end_file = "c:\\temp\\epg_end.xml";
$epg_file = "c:\\temp\\epg.xml";

my $ua = LWP::UserAgent->new(
        agent      => 'Mozilla/4.73 [en] (X11; I; Linux 2.2.16 i686; Nav)',
    );
if( $proxy ne "" ){
    $ua->proxy(http=>$proxy);
}    

open(EE,">$epg_end_file") || die ddie("Cannot open $epg_end_file: $_<BR>\n");
close(L);

#foreach $channel_id (1..15,23..40,113..115,125..151){
#free:
foreach $channel_id (2,3,7,5,40,131,50,162,113,81,116,121,117,163,17,29,98,31,11,42,43,8,95,10,159,161,100,44){
    open(L, ">>$log_file") || die ddie("Cannot open $log_file: $_<BR>\n");
    print L "Retrieve Channel $channel_id ...";
    foreach $i (0..10){
    print L "$i \n";
    my ($sec1,$min1,$hour1,$mday1,$mon1,$year1,$wday1,$yday1) = localtime(time+86400*$i);
    $year1+=1900;
    $mon1 = sprintf("%02d", $mon1+1);
    $mday1 = sprintf("%02d", $mday1);
    
#    $url_1 = "http://telepoche.guidetele.com/gtv/journee?openagent&c=$channel_id&d=$mday1&h=0"; # Eh oui cela fonctionne en relatif à partir d'un jour à définir
    $url_1 = "http://telepoche.guidetele.com/gtv/journee?openagent&c=$channel_id&d=$i&h=0";
    
    $req = HTTP::Request->new(GET => $url_1);
    $res = $ua->request($req);
    
    if (!$res->is_success) {
        print L "Cannot retrieve from $url_1<BR>\n";
        exit;
    }
    
    @lines = split(/onMouseover="showmenu\('/, $res->content);
    
    if( $lines[0] =~ /src="\/c_img\/chaine\/(.*)\.gif">/ ){
        $channel_name = $1;
        $channels[$channel_id] = $channel_name;
        #print "Channel name= $channel_name\n";
    }
    foreach $l (@lines){
    #    print "$l\n";
    #        13h50-14h50<br> Série<br> Showview : 1263869','Inspecteur Derrick - Vengeance')" onMouseout="hidemenu()"  onclick="fiche('16789309');return false"
    #    if( $l =~ /([0-9]+)h([0-9]+)-([0-9]+)h([0-9]+)<br> Série<br> Showview : [0-9]*','(.*)'\)" onMouseout="hidemenu()"  onclick="fiche\('([0-9]+)'\);return false"/){
        if( $l =~ /^([0-9]+)h([0-9]+)-([0-9]+)h([0-9]+)<br> (.*)<br> Showview : ([0-9]*)','(.*)'\)" onMouseout="hidemenu\(\)"  onclick="fiche\('([0-9]+)'\);return false"/){
#   <programme start="20061026085000 +0200" stop="20061026103000 +0200" showview="509303572" channel="C136.telepoche.com">
            $start_time = "$year1$mon1$mday1" . $1 . $2 . "00 +0200";
            $stop_time = "$year1$mon1$mday1" . $3 . $4 . "00 +0200";
            $genre = $5;
            $showview = $6;
            $title = $7;
            $fiche_id = $8;
            $url_2 = "http://telepoche.guidetele.com/fiche/emi_$fiche_id";
            $req2 = HTTP::Request->new(GET => $url_2);
            $res2 = $ua->request($req2);
            
            if ($res2->is_success) {
                @lines2 = split(/\n/, $res2->content);
                $histoire = "";
                $resume = "";
                $avis="";
                foreach $l2 (@lines2){
                    #class="noir11">HISTOIRE</span> <span class="noir11r">: Les coups de folie d'un policier blanc, décidé à nettoyer un petit village africain de toutes ses crapules.</span></p>
                    if( $l2 =~ /class="noir11">HISTOIRE<\/span> <span class="noir11r">(.*)<\/span><\/p>/ ){
                        $histoire = $1;
                    }elsif( $l2 =~ /class="noir11">RESUME<\/span> <span class="noir11r">(.*)<\/span><\/p>/ ){
                        $resume = $1;
                    }elsif( $l2 =~ /class="noir11">AVIS<\/span> <span class="noir11r">(.*)<\/span><\/p>/ ){
                        $avis = $1;
                    }
                }
            }else{
                print L "Cannot retrieve from $url_2<BR>\n";
            }

            print EE "<programme start=\"$start_time\" stop=\"$stop_time\" showview=\"$showview\" channel=\"C$channel_id.telepoche.com\">\n";
            print EE "<title>$title</title>\n";
            print EE "<description><B>HISTOIRE:</B> $histoire<BR><B>RESUME:</B> $resume<BR><B>AVIS:</B> $avis</description>\n</programme>\n";
        }
    }
    }
    print L "$channels[$channel_id] OK<BR>\n";
    close(L);
}
close(EE);
open(L, ">>$log_file") || die ddie("Cannot open $log_file: $_<BR>\n");
# Write begin
open(E,">$epg_file") || die ddie("Cannot open $epg_file: $_<BR>\n");
print E <<bal_1_text;
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">

<tv source-info-url="http://telepoche.guidetele.com/" source-data-url="http://telepoche.guidetele.com/" generator-info-name="XMLTV" generator-info-url="http://membled.com/work/apps/xmltv/">
bal_1_text
    
#foreach $ic (1..15,23..40,113..115,125..151){
foreach $ic (2,3,7,5,40,131,50,162,113,81,116,121,117,163,17,29,98,31,11,42,43,8,95,10,159,161,100,44){
    if( $channels[$ic] ){
        print E <<bal_2_text;
  <channel id="C$ic.telepoche.com">
    <display-name>$channels[$ic]</display-name>
    <icon src="http://static.guidetele.com/c_img/chaine/$channels[$ic].gif" />
  </channel>        
bal_2_text
    }
}
open(EE,"$epg_end_file") || die ddie("Cannot open $epg_end_file: $_<BR>\n");
while($l = <EE>){
print E $l;
}
print L "</BODY></HTML>\n";
close(E);
close(EE);
close(L);

sub ddie($){
    my $msg=shift;
    print L $msg;
}

# 1..15,23..40,113..115,125..151

#    1    TF1
#    2    France 2
#    3    France 3
#    4    Canal +
#    5    Arte
#    6    M 6
#    7    France 5
#    8    RTL 9
#    9    TMC
#    10    TV 5
#    11    Paris Première
#    12    Eurosport
#    13    Série Club
#    14    Planète
#    15    Odyssée
#    16    Voyage
#    17    Histoire
#    18    Disney Channel
#    19    Télétoon
#    20    Jetix
#    21    Canal J
#    22    Jimmy
#    23    Cinétoile
#    26    Cinéstar
#    27    Homecinéma
#    28    France 4
#    29    Mezzo
#    30    MCM
#    31    MTV
#    34    Teva
#    38    W9
#    39    13ème rue
#    40    AB 1
#    47    Seasons
#    48    Sport +
#    50    Animaux
#    51    Comédie !
#    59    Multivision 7
#    60    Kiosque 1
#    61    Kiosque 2
#    62    Kiosque 3
#    63    Kiosque 4
#    64    Kiosque 5
#    65    Kiosque 6
#    66    Kiosque 7
#    67    Kiosque 8
#    68    Kiosque 9
#    69    Kiosque 10
#    71    Canal Cinéma
#    72    Canal Décalé
#    73    Canal Sport
#    80    Mangas
#    81    Escales
#    88    Cartoon Network
#    98    Moteurs
#    100    XXL
#    113    Chasse et pêche
#    114    Cinéculte
#    115    TCM
#    116    Equidia
#    117    L'équipe TV
#    118    LCI
#    121    Euronews
#    122    i-télé
#    125    TF6
#    126    TV Breizh
#    130    TPS Stars
#    131    Action
#    134    National Geographic
#    135    Ciné Premier
#    136    Ciné Emotion
#    137    Ciné Frisson
#    138    Ciné Famiz
#    139    Ciné Auteur
#    140    Ciné Classic
#    141    Planète Thalassa
#    147    Ciné Polar
#    149    Ciné FX
#    150    Cinéfamily
#    151    Cinextreme
#    153    Tiji
#    159    Toute l'histoire
#    160    MCM Pop
#    161    Trace TV
#    163    Fashion TV
#    166    Pink TV
#    167    Direct 8
#    168    NT1
#    169    NRJ 12
#    170    La Chaîne Parlementaire
#    193    Europe 2
#    194    BFM TV
#    195    Gulli
#    
f t g m