wenor 发表于 2023-11-25 01:01:59

感谢分享

jingmingshow 发表于 2023-11-25 20:31:08

<?php
/*
*作者:清樱
*鸣谢:(以下排名不分先后)
*      时移和回看参考 @qqincai => https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8270896&page=1&authorid=478132
*      ip参考 @非凡 => https://此字符被系统屏蔽/post/105.html
*      id参考 @吾爱惠 => https://此字符被系统屏蔽/post/137.html
*
*已重新扫描并剔除部分576P重复id (更新:2023/09/29 使用软件: @IPTV Checker 2.1)
*
*本代码仅作研究与学习交流使用。不得用于非法用途,由此造成的一切后果由使用者自行承担!
*转载请注明出处,同时保留代码的完整性。
*/
//定义内置$ip_arr数组
$ip_arr = [
      'live.aishang.ctlcdn.com',
      '61.159.160.203/live.aishang.ctlcdn.com',
      '106.39.160.178/live.aishang.ctlcdn.com',
      '106.39.160.201/live.aishang.ctlcdn.com',
      '106.39.160.180/live.aishang.ctlcdn.com',
      '106.39.160.153/live.aishang.ctlcdn.com',
      '106.39.160.150/live.aishang.ctlcdn.com',
      '106.39.160.151/live.aishang.ctlcdn.com',
      '106.39.160.133/live.aishang.ctlcdn.com',
      '106.39.160.149/live.aishang.ctlcdn.com',
      '106.39.160.154/live.aishang.ctlcdn.com',
      '106.39.160.146/live.aishang.ctlcdn.com',
      '106.39.160.147/live.aishang.ctlcdn.com',
      '106.39.160.152/live.aishang.ctlcdn.com',
      '106.39.160.148/live.aishang.ctlcdn.com',
      '106.39.160.155/live.aishang.ctlcdn.com',
      '106.39.160.202/live.aishang.ctlcdn.com',
      '106.39.160.145/live.aishang.ctlcdn.com',
      '106.39.160.132/live.aishang.ctlcdn.com',
];
//$ip参数引入
$ip = empty($_GET['ip']) ? "0" : trim($_GET['ip']);//为空时默认为0,否则处理两边的空白符(如有)
//$ip参数合法性判断
if (isset($ip_arr[$ip])) {
      $ip = $ip_arr[$ip];//$ip_arr数组中已定义,取数组中对应的值
} else if (preg_match('/^[\d.]+$/', $ip)) {
      $ip = "{$ip}/live.aishang.ctlcdn.com";//$ip_arr数组中未定义,但只含有数字和.,加上域名
}
//定义内置$id_arr数组
$id_arr = [
      'cctv1' => '0127',//CCTV1
      'cctv2' => '0244',//CCTV2
      'cctv3' => '0245',//CCTV3
      'cctv4' => '0316',//CCTV4
      'cctv5' => '0246',//CCTV5
      'cctv6' => '0247',//CCTV6
      'cctv7' => '0248',//CCTV7
      'cctv8' => '0249',//CCTV8
      'cctv9' => '0250',//CCTV9
      'cctv92' => '0478',//CCTV9
      'cctv10' => '0251',//CCTV10
      'cctv11' => '0328',//CCTV11
      'cctv12' => '0252',//CCTV12
      'cctv13' => '0502',//CCTV13
      'cctv14' => '0253',//CCTV14
      'cctv15' => '0329',//CCTV15
      'cctv16' => '0388',//CCTV16
      'cctv164k' => '0389',//CCTV16
      'cctv164k2' => '0349',//CCTV16
      'cctv17' => '0326',//CCTV17
      'cctv5p' => '0128',//CCTV5+
      'cctv4e' => '0363',//CCTV4欧洲
      'cgtn' => '0365',//CGTN
      'cgtnd' => '0366',//CGTN纪录
      'cgtne' => '0370',//CGTN俄语
      'cgtnf' => '0368',//CGTN法语
      'cgtna' => '0369',//CGTN阿拉伯语
      'cgtnx' => '0367',//CGTN西班牙语
      'zgjy1' => '0302',//中国教育1台
      'zgjy2' => '5251',//中国教育2台
      'zgjy4' => '5252',//中国教育4台
      'gxws' => '0037',//广西卫视
      'gdws' => '0137',//广东卫视
      'szws' => '0132',//深圳卫视
      'hainan' => '0059',//海南卫视
      'ssws' => '0589',//三沙卫视
      'ynws' => '0082',//云南卫视
      'gzws' => '0318',//贵州卫视
      'dnws' => '0588',//东南卫视
      'xmws' => '0159',//厦门卫视
      'jxws' => '0398',//江西卫视
      'ahws' => '0256',//安徽卫视
      'hunan' => '0130',//湖南卫视
      'hubei' => '0135',//湖北卫视
      'hnws' => '0041',//河南卫视
      'hbws' => '0317',//河北卫视
      'cqws' => '0397',//重庆卫视
      'scws' => '0071',//四川卫视
      'zjws' => '0134',//浙江卫视
      'jsws' => '0133',//江苏卫视
      'dfws' => '0242',//东方卫视
      'sdws' => '0254',//山东卫视
      'sdjy' => '0304',//山东教育卫视
      'bjws' => '0129',//北京卫视
      'tjws' => '0136',//天津卫视
      'lnws' => '0255',//辽宁卫视
      'jlws' => '0399',//吉林卫视
      'hljws' => '0131',//黑龙江卫视
      'sxws' => '0066',//陕西卫视
      'shanxi' => '0065',//山西卫视
      'gsws' => '0034',//甘肃卫视
      'nxws' => '0061',//宁夏卫视
      'qhws' => '0063',//青海卫视
      'xzws' => '0076',//西藏卫视
      'xjws' => '0079',//新疆卫视
      'btws' => '0280',//兵团卫视
      'nmgws' => '0060',//内蒙古卫视
      'kbws' => '0331',//康巴卫视
      'kkse' => '0051',//卡酷少儿
      'jykt' => '0050',//金鹰卡通
      'jjkt' => '0087',//嘉佳卡通
      'chcjt' => '0323',//CHC家庭影院
      'chcdz' => '0324',//CHC动作电影
      'chcgq' => '0325',//CHC高清电影
      'xdm' => '0321',//新动漫
      'cftx' => '0148',//财富天下
      'guoxue' => '0332',//国学
      'xfpy' => '0320',//先锋乒羽
      'dzyy' => '0277',//动作影院
      'jtyy' => '0278',//家庭影院
      'jxdy' => '0275',//精选电影
      'wxjc' => '0308',//武侠剧场
      'xjyy' => '0276',//喜剧影院
      'xxwdy' => '0279',//寻星网电影
      'iptvdz' => '0003',//IPTV谍战剧场
      'iptvjd' => '0090',//IPTV经典电影
      'iptvrb' => '0089',//IPTV热播剧场
      'iptvse' => '0092',//IPTV少儿动画
      'iptvml' => '0091',//IPTV魅力时尚
      'iptvss' => '0225',//IPTV收视指南
      'iptvxs' => '0006',//IPTV相声小品
      'iptvfz' => '0096',//IPTV法治
      'iptvyy' => '0095',//IPTV野外
      'iptv3' => '0093',//IPTV3+
      'iptv5' => '0281',//IPTV5+
      'iptv6' => '0007',//IPTV6+
      'iptv8' => '0125',//IPTV8+
      'dili' => '0347',//地理
      'donghua' => '0335',//动画
      'gaowang' => '0346',//高网
      'guzhaung' => '0338',//古装
      'guangying' => '0343',//光影
      'junlv' => '0337',//军旅
      'junshi' => '0311',//军事
      'kexue' => '0348',//科学
      'ketang' => '0340',//课堂
      'jianshang' => '0342',//鉴赏
      'jiankang' => '5519',//健康
      'meizhuang' => '0310',//美妆
      'remeng' => '0336',//热门
      'taiqiu' => '0344',//台球
      'tansuo' => '0341',//探索
      'weidao' => '0345',//味道
      'wushu' => '0312',//武术
      'xiqu' => '0333',//戏曲
      'yinyue' => '0339',//音乐
      'zaojiao' => '0334',//早教
      'zuqiu' => '0309',//足球
      'aishang4k' => '0282',//爱上4K
      'jyjs' => '0303',//金鹰纪实
];
//$id参数引入
$id = empty($_GET['id']) ? "cctv1" : trim($_GET['id']);//为空时默认为cctv1,否则处理两边的空白符(如有)
//$id参数预处理(只是为了原生兼容自定义源标签)
if (preg_match('/\?.*|\$.*/', $id)) {//处理id=.*\?.*或id=.*\$.*的情况
      $id = preg_replace('/\?.*|\$.*/', '', $id);
}
//$id参数合法性判断
if (isset($id_arr[$id])) {
      $id = $id_arr[$id];//$id_arr数组中已定义,取数组中对应的值
}
//回看和时移参数引入
$playseek = $_GET['playseek']??'';
$start = $_GET['start']??'';
$end = $_GET['end']??'';
$timeshift = $_GET['timeshift']??'';
//模式判断
if ($timeshift) {//时移
      //域名替换,拼接地址
      $ip = preg_replace('/live/', 'ts', $ip);
      $url = "http://{$ip}/0000011024{$id}_1/encoder/0/playlist.m3u8?CONTENTID=0000011024{$id}_1&timeshift={$timeshift}";
} else if (empty($playseek) && empty($start)) {//直播
      //拼接地址
      $url = "http://{$ip}/0000011024{$id}_1/encoder/0/playlist.m3u8?CONTENTID=0000011024{$id}_1";
} else {//回看
      if ($playseek) {//$playseek模式
                //$playseek切割,并转成$start和$end
                $t_arr = explode('-',$playseek);
                $start = $t_arr;
                $end = $t_arr;
      }
      //设置时区
      date_default_timezone_set("PRC");
      //获取当前时间戳
      $time = time();
      //$end转成时间戳
      $e_t = strtotime($end);
      //比较上述两值大小
      if ($e_t >= $time) {//时移
                $timeshift = $time - strtotime($start);
                $ip = preg_replace('/live/', 'ts', $ip);
                $url = "http://{$ip}/0000011024{$id}_1/encoder/0/playlist.m3u8?CONTENTID=0000011024{$id}_1&timeshift={$timeshift}";
      } else {//回看
                //域名替换,拼接地址
                $ip = preg_replace('/live/', 'lb', $ip);
                $url = "http://{$ip}/0000011024{$id}_1/encoder/0/playlist.m3u8?CONTENTID=0000011024{$id}_1&start={$start}&end={$end}";
      }
}
//输出拼接好后的url
header("location: {$url}");
?>

xchx 发表于 2023-11-25 23:24:24

好的感谢

10840288 发表于 2023-11-26 15:12:56

谢谢分享

Y6221184 发表于 2023-11-26 15:29:13

前排支持~~~感谢分享

kooker 发表于 2023-11-26 21:48:59

感谢分享 看下还能用吗

梁雨轩 发表于 2023-11-26 21:54:04

谢谢分享

baitong 发表于 2023-11-27 06:51:33

看看有啥好东西啊

baitong 发表于 2023-11-27 06:52:05

非常感谢楼主的分享!谢谢

sdxql 发表于 2023-11-27 10:24:26

回复看看

hging 发表于 2023-11-27 11:12:40

感谢分享

lss2888 发表于 2023-11-27 12:55:09

{:3_42:}{:3_42:}{:3_42:}
页: 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21
查看完整版本: BesTV切片回看PHP源码