|
感谢gaoma大神提供的方案 :https://iptv.cc/thread-5725-1-1.html
这里只对代码做了简单改动,使php代理可以在服务器上托管。
直接服务器上传这两个php,再创建一个 sz.json文件(记得权限664),用来缓存数组。 服务器定时运行下面php,目的缓存最新数组。
- <?php
- $n = [
- 'cctv1?id=1725&uin=1632?CCTV1综合',
- 'dyjc?id=1793&uin=2311?CCTV第一剧场',
- 'zhms?id=3782&uin=4251?中华美食',
- 'cptv?id=3341&uin=3698?昌平电视台',
- 'dqzh?id=2281&uin=1463?大庆新闻综合',
- 'dqjy?id=2283&uin=1463?大庆教育',
- 'nazh?id=2475&uin=3543?牡丹江宁安综合',
- 'tlzh?id=2584&uin=3816?铁岭新闻综合',
- 'jptv1?id=1066&uin=1332?大连金普一套',
- 'jptv2?id=2598&uin=1332?大连金普二套',
- 'bdzh?id=3067&uin=1630?保定新闻综合',
- 'bdgg?id=3068&uin=1630?保定公共',
- 'bdsh?id=3069&uin=1630?保定生活健康',
- 'jzzh?id=732&uin=1724?衡水冀州综合',
- 'wqzh?id=3654&uin=1425?衡水武强综合',
- 'qxtv?id=2988&uin=4048?太原清徐电视台',
- 'hmxw?id=2125&uin=2556?临汾侯马新闻综合',
- 'qwzh?id=1203&uin=2653?临汾曲沃新闻综合',
- 'lltv1?id=2652&uin=2268?吕梁一套',
- 'lltv2?id=2653&uin=2268?吕梁二套',
- 'jctv?id=3406&uin=1779?吕梁交城电视台',
- 'lztv?id=3407&uin=1723?长治潞州电视台',
- 'rczh?id=2511&uin=3580?运城芮城综合',
- 'zbzh?id=2308&uin=3185?淄博新闻综合',
- 'jxzh?id=1306&uin=2606?济宁嘉祥新闻综合',
- 'jxsh?id=1307&uin=2606?济宁嘉祥生活',
- 'hztv1?id=3492&uin=4042?菏泽一套',
- 'hztv2?id=3493&uin=4042?菏泽二套',
- 'hztv3?id=3520&uin=4042?菏泽三套',
- 'ngzh?id=1588&uin=2465?宣城宁国新闻综合',
- 'sszh?id=3390&uin=4180?安庆宿松新闻综合',
- 'ssxq?id=3389&uin=4180?安庆宿松戏曲文艺',
- 'tczh?id=3350&uin=4104?安庆桐城综合',
- 'dszh?id=2334&uin=1364?宿州砀山新闻综合',
- 'fyzh?id=2851&uin=2577?阜阳新闻综合',
- 'fyjy?id=2852&uin=2577?阜阳教育',
- 'fygg?id=2853&uin=2577?阜阳公共',
- 'fyds?id=2854&uin=2577?阜阳都市文艺',
- 'fdzh?id=3780&uin=1167?肥东新闻综合',
- 'nyzh?id=142&uin=1081?南阳新闻综合',
- 'nygg?id=295&uin=1081?南阳公共',
- 'nykj?id=296&uin=1081?南阳科教',
- 'pyzh?id=3662&uin=3616?濮阳新闻综合',
- 'pygg?id=3017&uin=3616?濮阳公共',
- 'pyxtv?id=3753&uin=3616?濮阳县电视台',
- 'xxzh?id=3706&uin=4436?新乡新闻综合',
- 'xxgg?id=3708&uin=4436?新乡公共',
- 'hbzh?id=340&uin=1465?鹤壁新闻综合',
- 'pdsxwzh?id=1969&uin=2367?平顶山新闻综合',
- 'xyzh?id=3061&uin=1500?襄阳综合',
- 'xygg?id=2337&uin=1500?襄阳公共',
- 'xyjj?id=2675&uin=1500?襄阳经济生活',
- 'szzh?id=304&uin=1487?随州综合',
- 'sznc?id=305&uin=1487?随州农村',
- 'xtzh?id=509&uin=1832?仙桃新闻综合',
- 'cdzh?id=1982&uin=3165?武汉蔡甸新闻综合',
- 'xzzh?id=2904&uin=3951?武汉新洲综合',
- 'hszh?id=3031&uin=3065?黄石新闻综合',
- 'hsds?id=3032&uin=3065?黄石都市',
- 'hsgg?id=3623&uin=3065?黄石公共',
- 'zbhs?id=3071&uin=3065?直播黄石',
- 'eszh?id=1812&uin=3179?恩施新闻综合',
- 'eswl?id=1811&uin=3179?恩施文旅',
- 'bdtv?id=3522&uin=3179?巴东综合',
- 'xfzh?id=3567&uin=3179?咸丰综合',
- 'jmzh?id=3612&uin=1936?荆门新闻综合',
- 'hnws?id=680&uin=1202?湖南卫视',
- 'hnws2?id=1726&uin=1632?湖南卫视2',
- 'csxw?id=346&uin=1648?长沙新闻',
- 'cszf?id=348&uin=1648?长沙政法',
- 'lyxw?id=1788&uin=3275?长沙浏阳电视台',
- 'yyzh?id=1699&uin=2193?岳阳新闻综合',
- 'yywl?id=1701&uin=2193?岳阳文旅都市',
- 'zzzh?id=2053&uin=1366?株洲新闻综合',
- 'nxxw?id=1724&uin=1632?益阳南县新闻',
- 'xxxw?id=2581&uin=3815?湘西综合',
- 'xxgg?id=2582&uin=3815?湘西公共',
- 'yzzh?id=3088&uin=4100?郴州宜章新闻综合',
- 'ytzh?id=2574&uin=3313?鹰潭新闻综合',
- 'jnzh?id=2505&uin=3579?南京江宁综合',
- 'gyzh?id=777&uin=1909?连云港灌云综合',
- 'hazh?id=2778&uin=1610?淮安综合',
- 'wxha?id=808&uin=1610?无线淮安',
- 'xytv1?id=3177&uin=1812?徐州新沂1套',
- 'xytv2?id=3178&uin=1812?徐州新沂2套',
- 'xydy?id=2648&uin=1812?徐州新沂老电影',
- 'lazh?id=2747&uin=3568?杭州临安综合',
- 'fyxw?id=1181&uin=1482?杭州富阳新闻综合',
- 'lpxw?id=2513&uin=3767?杭州临平新闻',
- 'jdzh?id=187&uin=1176?杭州建德综合',
- 'tlxw?id=3566&uin=1163?杭州桐庐新闻综合',
- 'yqzh?id=171&uin=1356?温州乐清综合',
- 'yqxw?id=170&uin=1356?温州乐清新闻',
- 'yjzh?id=1335&uin=2768?温州永嘉新闻综合',
- 'wlzh?id=911&uin=1639?台州温岭新闻综合',
- 'wlms?id=1287&uin=1639?台州温岭民生休闲',
- 'xjzh?id=1603&uin=2515?台州仙居新闻综合',
- 'xcxw?id=1361&uin=2840?绍兴新昌新闻',
- 'xcsh?id=1362&uin=2840?绍兴新昌生活',
- 'nhzh?id=1423&uin=1329?宁波宁海新闻综合',
- 'fhzh?id=3152&uin=3512?宁波奉化新闻综合',
- 'cxzh?id=3697&uin=1346?宁波慈溪新闻综合',
- 'ajxw?id=1499&uin=1253?湖州安吉新闻综合',
- 'ajsh?id=1526&uin=1253?湖州安吉生活影视',
- 'jhzh?id=3711&uin=4099?金华新闻综合',
- 'ywzh?id=1796&uin=3071?金华义乌新闻综合',
- 'ywsm?id=2133&uin=3071?金华义乌商贸',
- 'ywgg?id=3090&uin=3071?金华义乌公共文艺',
- 'lxzh?id=1185&uin=1324?金华兰溪新闻综合',
- 'txzh?id=1511&uin=1043?嘉兴桐乡新闻综合',
- 'fqzh?id=699&uin=1945?福州福清综合',
- 'mhzh?id=2068&uin=2656?福州闽侯综合',
- 'ptzh?id=907&uin=1118?平潭新闻综合',
- 'ptly?id=908&uin=1118?平潭旅游文化',
- 'yazh?id=2597&uin=3454?三明永安综合',
- 'sxzh?id=425&uin=1567?三明沙县综合',
- 'yxzh?id=765&uin=2055?三明尤溪新闻综合',
- 'yxly?id=767&uin=2055?三明尤溪旅游宣传',
- 'qgtv?id=2333&uin=3708?泉州泉港一套',
- 'dhzh?id=2467&uin=3164?泉州德化综合',
- 'yctv1?id=1792&uin=2311?泉州永春综合',
- 'yctv2?id=1793&uin=2311?泉州永春公共',
- 'zztv1?id=175&uin=1116?漳州一套',
- 'zpzh?id=2803&uin=3350?漳州漳浦综合',
- 'jmtv?id=3102&uin=4113?厦门集美综合',
- 'xytv?id=643&uin=1629?茂名信宜电视台',
- 'kpzh?id=1434&uin=1132?江门开平综合',
- 'kpsh?id=1435&uin=1132?江门开平生活',
- 'zctv?id=3454&uin=3047?广州增城台',
- 'lzzh?id=1902&uin=3370?柳州新闻综合',
- 'lzkj?id=1808&uin=3370?柳州科教',
- 'ylzh?id=3289&uin=4042?玉林新闻综合',
- 'ylgg?id=3290&uin=4042?玉林公共',
- 'gy1?id=3398&uin=4263?贵阳新闻综合',
- 'yjtv?id=3043&uin=4088?铜仁印江电视台',
- 'njtv?id=1670&uin=1822?巴中南江电视台',
- 'mztv?id=1933&uin=3277?德阳绵竹电视',
- 'mztv2?id=3686&uin=3277?德阳绵竹电视2',
- 'shtv?id=391&uin=1743?遂宁射洪综合',
- 'akstv1?id=2229&uin=3643?阿克苏1套汉语综合',
- 'akstv2?id=2233&uin=3643?阿克苏2套维语综合',
- 'aksdj?id=2234&uin=3643?阿克苏党员远程教育',
- 'bejha?id=3377&uin=4239?阿勒泰布尔津哈语综合',
- 'dztv?id=1330&uin=1669?海南儋州台',
- ];
- $result = [];
- for ($i = 0; $i < count($n); $i++) {
- $ar = explode("?", $n[$i]);
- $pid = $ar[0]; // 如:cctv1
- $id = $ar[1]; // 如:id=1725&uin=1632
- $pn = $ar[2] ?? '未知频道'; // 频道名,容错处理
- $apiUrl = "https://1812501212048408.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/node-api.online/node-api/tv/getPlayAddress?{$id}&clientId=奥点有效Id" . getrand(8);
- $h = [
- "Referer: https://web.guangdianyun.tv/",
- "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
- ];
- $ch = curl_init($apiUrl);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $h);
- $response = curl_exec($ch);
- curl_close($ch);
- $data = json_decode($response, true);
- if (isset($data['data']['hlsUrl'])) {
- $extra_key = explode("extra_key=", $data['data']['hlsUrl'])[1] ?? '';
- $result[$pid] = [$id, $extra_key]; // 保存格式 ['cctv1' => ['id=xxx&uin=xxx', 'extra_key']]
- }
- }
- file_put_contents(__DIR__ . '/sz.json', json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
- echo "数据已成功写入 sz.json 文件。";
- function getrand($length) {
- $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
- $randomString = '';
- for ($i = 0; $i < $length; $i++) {
- $randomIndex = random_int(0, strlen($characters) - 1);
- $randomString .= $characters[$randomIndex];
- }
- return $randomString;
- }
- ?>
复制代码- <?php
- error_reporting(0);
- // 读取 sz.json 文件并解析为数组
- $jsonData = file_get_contents(__DIR__ . '/sz.json');
- $n = json_decode($jsonData, true);
- // 获取频道 ID,默认为 cctv1
- $id = isset($_GET['id']) ? $_GET['id'] : 'cctv1';
- // 判断 ID 是否存在于 $n 中
- if (!isset($n[$id])) {
- exit('Invalid channel ID.');
- }
- // 构建 API 请求 URL
- $apiUrl = "https://1812501212048408.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/node-api.online/node-api/tv/getPlayAddress?" . $n[$id][0] . "&clientId=奥点有效Id" . getrand(8);
- // 设置请求头
- $h = [
- "Referer: https://web.guangdianyun.tv/",
- "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
- ];
- // 发送 CURL 请求
- $ch = curl_init($apiUrl);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $h);
- $response = curl_exec($ch);
- curl_close($ch);
- // 解析返回数据
- $data = json_decode($response, true);
- // 拼接播放地址
- $url = explode("&extra_key", $data['data']['hlsUrl'])[0] . "&extra_key=" . $n[$id][1];
- $burl = dirname($url)."/";
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $h);
- $res = curl_exec($ch);
- curl_close($ch);
- header('Content-Type: application/vnd.apple.mpegurl');
- print_r(preg_replace("/(.*?.ts)/i",$burl."$1",$res));
- // 生成随机字符串函数
- function getrand($length) {
- $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
- $randomString = '';
- for ($i = 0; $i < $length; $i++) {
- $randomIndex = random_int(0, strlen($characters) - 1);
- $randomString .= $characters[$randomIndex];
- }
- return $randomString;
- }
- ?>
复制代码 调用方式:https://你的域名/gdy.php?id=cctv1
借花献佛,再次感谢gaoma大神提供的代码及方案。
|
|