Page 1 sur 1

Récupérer l'EPG de Télépoche en XMLTV

Posté : 27 févr. 2017, 21:38
par racacax
Bonjour,
Beaucoup de sites existent pour graber l'EPG en XML TV. La plupart (non, tous) utilisent Télérama. J'ai un script pour Télérama, mais je dois le peaufiner.

Donc, j'ai décidé de partager avec vous, un script PHP qui récupère l'EPG de TéléPoche. Cela sera parfait pour des plateformes telles que Kodi ou MythTV. Il a l'avantage d'être léger contrairement à celui de Télérama qui est vraiment complet au niveau de la description. Le désavantage est qu'il y a moins de chaines mais le principal est là. D'ailleurs, dans l'array, vous pouvez en enlever si certaines ne vous intéressent pas. Je n'ai pas activé la MAJ auto de la liste des chaines car les ID peuvent changer et ce serait problématique.

Voici le script, il est pas beau mais il fonctionne. L'EPG est réactualisé chaque jour pour une semaine :
<?php
ini_set("display_errors",0);error_reporting(0);
if(date('Ymd') <> date('Ymd',filemtime("complet.xml")))
{
set_time_limit(0);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"Telepoche-".date('Y-m-d').".xml\""); 
$blah = '<?xml version="1.0" encoding="UTF-8"?>

<tv source-info-url="http://telepoche.com/" source-data-url="http://telepoche.com/" generator-info-url="http://forum-racacax.ga/">
';
$lolo = $lolo.$blah;
echo $blah;
$listechaine = array('tf1','france2','france3','canalplus','france5','m6','arte','c8','w9','tmc','nt1','nrj12','lcp2424','france4','bfmtv','cnews','cstar','gulli','franceo','hd1','lequipe','6ter','numero23','rmcdecouverte','cherie25','teva','tv5mondefbs','parispremiere','rtl9','ab1','tvbreizh','mcm','canalpluscinema','canalplussport','canalplusseries','canalplusfamily','canalplusdecale','ocsmax','ocscity','ocschoc','ocsgeants','polar','cinefx','cinepluspremier','cineplusemotion','cineplusfamiz','cineplusclub','cineplusclassic','disneychannelplus1','disneychannel','boomerang','piwiplus','babytv','boing','equidialive','equidialife','abmoteurs','beinsports1','beinsports2','eurosport','eurosport2','tracesports','girondinstv','lci','bfmbusiness','ushuaiatv','histoire','animaux','chasseetpeche','toutelhistoire','nolife','gameone','traceurban','nrjhits','m6music','mcmtop','tracetropical','mezzo','mezzolivehd','mensup','kto','cnninternational','cnbc','bbcworld','aljazeerauk','bestofshopping','astrocentertv','luckyjacktv','cctvf','motorstv','oltv','vivolta','publicsenatlcpan','paramountchannel','nationalgeographicchannel','nationalgeographicwild','voyage','ofivetv','just4talent','bloombergtv','publicsenat2424','mcetv','tv7bordeaux','8montblanc','telegrenoble','bravahdtv','mtv','jone','mcs','serieclub','13emerue','comedieplus','syfy','eentertainment','mangas','mcsbienetre','planeteplus','planeteplusci','planeteplusae','discoverychannel','discoveryscience','infosport','mcsextreme','golfplus','extremesportschannel','disneyjunior','tiji','nickelodeon','nickelodeonjunior','canalj','cartoonnetwork','disneyxd','mtvhits','action','cineplusfrisson','cinepluspremierbe','clubrtl','laune','ladeux','latrois','plugrtl','rtltvi','rtsun','rtsdeux','seasonsplus','teletoonplus','be1','becine','beseries','besport1','besport2','cineplusclassicbe','cineplusfrissonbe');

// $get1 = html_entity_decode(file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/orange').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/free').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/bouygues').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/sfr').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/numericable').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/canal-et-canalsat').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/cable-adsl-satellite').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/belgique').file_get_contents('http://www.telepoche.fr/programme-tv/grille/'.date('Y-m-d').'/ors-bouquet'),ENT_QUOTES);
// $get1 = str_replace('<a href="/programme-tv/grille-chaine/','<a chduzes="',"$get1");
// preg_match_all('/a chduzes="(.*?)"/', $get1, $listechaine);
// $listechaine = array_unique($listechaine[1]);
// Pour faire la liste des chaines à chaque fois. Déconseillé car changement d'IDS possible
$ii = 1;
foreach ($listechaine as &$chn) {	
$bloh = "<channel id=\"C".$ii.".telepoche.com\">
    <display-name>".$chn."</display-name>
</channel>".chr(10);
echo $bloh;
$lolo = $lolo.$bloh;
$ii++;
}
$ii = 1;
foreach ($listechaine as &$chn) {
$get88 = html_entity_decode(file_get_contents('http://www.telepoche.fr/programme-tv/grille-chaine/'.$chn),ENT_QUOTES);
$delimiter = explode('<div class="grid-content">',$get88)[1];
$delimiter = strstr($delimiter, '<!-- adtech emplacement:footer -->', true);
$conversion = array(">"=>'"',"<"=>'"');
$res2 = strtr($delimiter,$conversion);
$res2 = str_replace('"/div"                                                                                                "/div"','"enday"',"$res2");
$conversion = array('   '=>'','class="category"""'=>'class="category""Inconnue"','class="title-episode"""'=>'class="title-episode""Inconnu"','"p class="synopsis""'.CHR(10)=>'"p class="synopsis""',CHR(10).'                "/p"'=>'"/p"','                    '=>'');
$res2 = strtr($res2,$conversion);
$res2 = str_replace('p class="synopsis"""','p class="synopsis""Aucune Description disponible"',"$res2");
$res2 = str_replace('"span"'.CHR(10).CHR(10).'"div class="meta-datas""','"span"'.CHR(10).CHR(10).'"img itemprop="image" class="thumbnail" src="http://css1.telepoche.fr/extension/telepoche/design/telepoche/images/layout/grid-no-picture.jpg" "div class="meta-datas""',"$res2");
$count = 0;
$exp = "fttf";
$dr = 0;
$exp2 = explode('div id="days"',$res2);
$exp2 = explode('"enday"',$res2);
while(strlen($exp) > 2) {
$date = date('Ymd',strtotime(date("Ymd", strtotime(date("Ymd"))) . " +".$count." day"));
${'deb'.$date} = array();
${'fin'.$date} = array();
${'title'.$date} = array();
${'time'.$date} = array();
${'duree'.$date} = array();
${'cat'.$date} = array();
${'epi'.$date} = array();
${'syno'.$date} = array();
${'thumb'.$date} = array();
${'url'.$date} = array();
$exp = $exp2[$dr];
if(strlen($exp) > 2) {
$tabexp[] = $exp;
preg_match_all('/p class="time""(.*?) - "/', $exp, ${'time'.$date});
${'time'.$date} = ${'time'.$date}[1];
preg_match_all('/span"(.*?)"/', $exp, ${'duree'.$date});
${'duree'.$date} = array_filter(${'duree'.$date}[1]);
preg_match_all('/class="category""(.*?)"/', $exp, ${'cat'.$date});
${'cat'.$date} = array_filter(${'cat'.$date}[1]);
preg_match_all('/class="title-episode""(.*?)"/', $exp, ${'epi'.$date});
${'epi'.$date} = array_filter(${'epi'.$date}[1]);
preg_match_all('/p class="synopsis""(.*?)"/', $exp, ${'syno'.$date});
${'syno'.$date} = array_filter(${'syno'.$date}[1]);
preg_match_all('/class="thumbnail" src="(.*?)"/', $exp, ${'thumb'.$date});
${'thumb'.$date} = array_filter(${'thumb'.$date}[1]);
preg_match_all('/lien-fiche" href="(.*?)"/', $exp, ${'url'.$date});
${'url'.$date} = array_filter(${'url'.$date}[1]);
foreach (${'url'.$date} as &$uuu) {
$dab = explode('lien-fiche" href="'.$uuu.'""',$exp)[1];
$dab = strstr($dab, '"', true);
${'title'.$date}[] = $dab;
}
foreach (array_combine(${'time'.$date}, ${'duree'.$date}) as $time => $duree) {
$duree = str_replace('(','',"$duree");
$duree = str_replace(')','',"$duree");
$duree = str_replace(' ','',"$duree");
$duree = str_replace('min','',"$duree");
$duree = $duree*60;
$time = str_replace("h","","$time");
$time = $date.$time.'00';
$dt = strtotime($time);
$duree = $dt+$duree;
$duree = date('YmdHis',$duree);

${'fin'.$date}[] = $duree;
${'deb'.$date}[] = $time;
}
}
$dr++;
$count++;
}
$count3 = 0;
$date = date('Ymd');
while(strlen(${'title'.$date}[0]) > 0)
{
$date = date('Ymd',strtotime(date("Ymd", strtotime(date("Ymd"))) . " +".$count3." day"));
$count3++;
$count2 = 0;
while(strlen(${'title'.$date}[$count2]) >0)
	{
if(strlen(${'deb'.$date}[$count2+1]) >2)
	{
	$hdf = ${'deb'.$date}[$count2+1];
	} else { $hdf = ${'fin'.$date}[$count2]; } 
$string = '  <programme start="'.${'deb'.$date}[$count2].' +0100" stop="'.$hdf.' +0100" channel="C'.$ii.'.telepoche.com">
    <title>'.${'title'.$date}[$count2].'</title>
    <desc lang="fr">'.${'syno'.$date}[$count2].'</desc>
    <category lang="fr">'.${'cat'.$date}[$count2].'</category>
    <icon src="'.${'thumb'.$date}[$count2].'" />
  </programme>';
$string = str_replace('&','&',"$string");
$lolo = $lolo.$string.chr(10);
echo $string.chr(10);
$count2++;	
	}
}
$ii++;
}
$lolo = $lolo.'</tv>';
echo '</tv>';
file_put_contents('complet.xml',$lolo);
} else { header('Location: complet.xml'); }

Re: Récupérer l'EPG de Télépoche en XMLTV

Posté : 16 nov. 2018, 17:24
par laforet
Bonjour,
Excusez moi pour cette question, mais je débute sur Kodi. J'ai installé une IPtv et je cherche désespérément un guide tv pour mon iptv. Votre solution à l'air très pratique, mais je ne comprends pas où je dois coller le code que vous avez écrit? Dans un fichier texte? Si oui, où dois-je placer le fichier texte? N'importe où? Dans ce cas, je dois l'ouvrir depuis Kodi, ou via du ssh? D'avance merci pour votre réponse et votre travail.
Bien à vous