根据自己需要扩充 $cid 数据,然后服务器定期执行这个脚本,在php文件同目录下会生成 epg_tvs.xml 文件和*.gz 压缩文件。然后可以浏览 xml 文件看效果。该文件适用于 prefect player、progtv、kodi、tivimate 等播放器。
$cid获取如下,打开你需要的电视台的,截取网址高亮部分,根据已有格式(大概第 7 行)加入到以下代码适当位置。
<?php if(date_default_timezone_get() != "Asia/Shanghai") date_default_timezone_set("Asia/Shanghai"); $fp="epg_tvs.xml";//压缩版本的扩展名后加.gz $id0=100000;//起始节目编号 $cid=array( array('42688016','湖南都市'), array('34d6b6de','湖南经视'), ); function compress_html($string) { $string = str_replace("\r", '', $string); //清除换行符 $string = str_replace("\n", '', $string); //清除换行符 $string = str_replace("\t", '', $string); //清除制表符 return $string; } $dt1=date('Ymd'); $dt2=date('Ymd',time()+24*3600); $w1=date("w"); if ($w1<'1') {$w1=7;} $w2=$w1+1; $url0="https://www.tvsou.com/epg/"; $chn="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE tv SYSTEM \"http://api.torrent-tv.ru/xmltv.dtd\">\n<tv generator-info-name=\"tvsou\" generator-info-url=\"www.tvsou.com/epg\">\n"; $nid=sizeof($cid); for ($id = 1; $id <= $nid; $id++){ $t0=array(); $t1=array(); $nm=array(); $url=$url0.$cid[$id-1][0].'/w'.$w1; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $re = curl_exec($ch); curl_close($ch); $re=compress_html($re); preg_match('|<table class="layui-table c_table"(.*?)layui-tab-item|i',$re,$u); preg_match_all('|<tr>([\s\S]+?)<\/tr>|', trim($u[1]), $u); $u=$u[1]; $num=sizeof($u); for ($i = 0; $i < $num; $i++) { preg_match_all('|_blank\'>(.*?)<\/a>|',$u[$i],$tr); $t0[]=$dt1.str_replace(':','',$tr[1][0]).'00 +0800'; $nm[]=$tr[1][1]; } $url=$url0.$cid[$id-1][0].'/w'.$w2; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $re = curl_exec($ch); curl_close($ch); $re=compress_html($re); preg_match('|<table class="layui-table c_table"(.*?)layui-tab-item|i',$re,$u); preg_match_all('|<tr>([\s\S]+?)<\/tr>|', trim($u[1]), $u); $u=$u[1]; $num=sizeof($u); for ($i = 0; $i < $num; $i++) { preg_match_all('|_blank\'>(.*?)<\/a>|',$u[$i],$tr); $t0[]=$dt2.str_replace(':','',$tr[1][0]).'00 +0800'; $nm[]=$tr[1][1]; } $num=sizeof($t0); for ($i = 1; $i < $num; $i++) {$t1[]=$t0[$i];} $t1[]=$dt2.'235959 +0800'; $idd=$id0+$id; $chn.="<channel id=\"".$idd."\"><display-name lang=\"zh\">".$cid[$id-1][1]."</display-name></channel>\n"; for ($i = 0; $i < $num; $i++) { $chn.="<programme start=\"".$t0[$i]."\" stop=\"".$t1[$i]."\" channel=\"".$idd."\">\n<title lang=\"zh\">".$nm[$i]."</title>\n<desc lang=\"zh\"> </desc>\n</programme>\n"; } } $chn.="</tv>\n"; //写入文件。这里一次性写入,可以自己分次写入操作 file_put_contents($fp, $chn); //创建压缩版本 $fn = gzopen ($fp.'.gz', 'w9'); gzwrite($fn, file_get_contents($fp)); gzclose($fn); ?>
转自大佬“canhuang”。
老大,能不能写个apache 反向代理拉取TW 或者国外 的电视台 M3U8 流。 用下面的方式访问,下面的连接会生成一个.m3u8格式的文件自动下载那种。
https://xxx.net/tw-zs.php?url=https://xxx.net/tw-zs.php
站立能否写一个tvmao的PHP脚本?不能老是复制别人的