|
发表于 2023-11-25 20:31:08
|
显示全部楼层
<?php
/*
*作者:清樱
*鸣谢:(以下排名不分先后)
* 时移和回看参考 @qqincai => https://www.right.com.cn/forum/f ... amp;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×hift={$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[0];
$end = $t_arr[1];
}
//设置时区
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×hift={$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}");
?> |
|