PHP 封装函数,获取cztv 直播 auth_key,
PHP 封装函数,获取cztv 直播 auth_key, 适用CZTV 电视直播, 调频广播
//PHP 封装函数,获取cztv 直播 auth_key,
function getCztvAuthkey($url = ''){
if($url == ''){
return;
}
$keyArr = array(
'zappl01.cztv.com' => array(
'key' => 'F7nW84dyAfswpyB0'
),
'zappl02.cztv.com' => array(
'key' => 'F7nW84dyAfswpyB0'
),
'zhfivel01.cztv.com' => array(
'key' => '9T08yiAoqM4eeCwV'
),
'zhfivel02.cztv.com' => array(
'key' => '9T08yiAoqM4eeCwV'
),
'zhfivel03.cztv.com' => array(
'key' => '9T08yiAoqM4eeCwV'
),
'zhfivel04.cztv.com' => array(
'key' => '9T08yiAoqM4eeCwV'
),
'zhfivel05.cztv.com' => array(
'key' => '9T08yiAoqM4eeCwV'
),
'zhfivel06.cztv.com' => array(
'key' => '9T08yiAoqM4eeCwV'
),
'zhfivel07.cztv.com' => array(
'key' => '9T08yiAoqM4eeCwV'
),
'zwebl01.cztv.com' => array(
'key' => 'CHWr9VybUeBZE1VB'
),
'zwebl02.cztv.com' => array(
'key' => 'CHWr9VybUeBZE1VB'
),
'zwebl03.cztv.com' => array(
'key' => 'CHWr9VybUeBZE1VB'
),
'zwebl04.cztv.com' => array(
'key' => 'CHWr9VybUeBZE1VB'
),
'zwebl05.cztv.com' => array(
'key' => 'CHWr9VybUeBZE1VB'
),
'zwebl06.cztv.com' => array(
'key' => 'CHWr9VybUeBZE1VB'
),
'zwebl07.cztv.com' => array(
'key' => 'CHWr9VybUeBZE1VB'
)
);
$pathname = parse_url($url)['path'];
$host = parse_url($url)['host'];
if(!isset($keyArr[$host])){
return;
}
$cztvKey = $keyArr[$host]['key'];
//rand 也是可以将时间戳 MD5加密得到32位字符串
$rand = bin2hex(random_bytes(16));
$timestamp = time();
$uid = '0';
$sign = md5($pathname.'-'.$timestamp.'-'.$rand.'-'.$uid.'-'.$cztvKey);
$auth_key = $timestamp.'-'.$rand.'-'.$uid.'-'.$sign;
return $url.'?auth_key='.$auth_key;
}
echo getCztvAuthkey($url = 'https://zwebl06.cztv.com/live/channel01480P.m3u8');
//返回: https://zwebl06.cztv.com/live/channel01480P.m3u8?auth_key=1740016378-98bacabed9e378bd7db73d5579711017-0-e749ee19af5a1701a46dc42b2c082e48
function getCztvTvRadioUrlOld(){
$qingxiduArr = array(
'480P' => '标清',
'720P' => '超清',
'1080P' => '蓝光',
'128k' => '音频'
);
$xianluArr = array(
'ali' => 'zwebl02',
'baidu' => 'zwebl03',
'ctcc' => 'zwebl04',
'qiniu' => 'zwebl06',
);
$radioNameArr = array(
'radio' => array(
'fm88' => '浙江之声',
'fm93' => '交通之声',
'fm95' => '经济广播',
'fm968' => '音乐调频',
'fm988' => '浙江新闻',
'fm996' => '浙江民生',
'fm1045' => '旅游之声',
'fm107' => '城市之声',
),
'tv' => array(
'channel01' => '浙江卫视',
'channel02' => '钱江都市',
'channel03' => '经济生活',
'channel04' => '科教影视',
'channel06' => '民生休闲',
'channel07' => '浙江新闻',
'channel10' => '浙江国际',
)
);
$result = array();
foreach($xianluArr as $xianluName => $xianluUrl){
foreach($radioNameArr['radio'] as $radioUrl => $radioName){
$result['浙江广播'.$xianluName][$radioName] = getCztvAuthkey('https://'.$xianluUrl.'.cztv.com/live/'.$radioUrl.'128k.m3u8');
}
}
foreach($qingxiduArr as $qingxiUrl => $qingxiName){
foreach($xianluArr as $xianluName => $xianluUrl){
foreach($radioNameArr['tv'] as $radioUrl => $radioName){
$result['浙江电视'.$xianluName.$qingxiName][$radioName] = getCztvAuthkey('https://'.$xianluUrl.'.cztv.com/live/'.$radioUrl.$qingxiUrl.'.m3u8');
}
}
}
return $result;
}
杭州电视台
$tvName = isset($_GET['tvName'])?$_GET['tvName']:'hzzh';
$qingxidu = isset($_GET['qingxidu'])?$_GET['qingxidu']:'sd';
$format = isset($_GET['format'])?$_GET['format']:'m3u8';
$configArr = [
'hzzh' => ['杭州综合','16','hztv1','https://live.hoolo.tv/'],
'xhmz' => ['西湖明珠','17','hztv2','https://live.hoolo.tv/'],
'hzsh' => ['杭州生活','18','hztv3','https://live.hoolo.tv/'],
'utv' => ['杭州影视','21','hztv4','https://live3.hoolo.tv/'],
'hzse' => ['青少体育','20','hztv5','https://live3.hoolo.tv/'],
'whpd' => ['文化频道','22','hztv6','https://live3.hoolo.tv/'],
];
$header = array(
'referer:'.'https://tv.hoolo.tv/'.$tvName.'/'
);
$url = 'https://mapi.hoolo.tv/api/v1/channel_detail.php?channel_id='.$configArr[$tvName][1];
$response = cURL($url, $method = 'GET', $header);
$arr = jsonToArray($response);
if($qingxidu = 'hd'){
$url = $arr[0]['channel_stream'][1]['m3u8'];
}
if($qingxidu = 'sd'){
$url = $arr[0]['channel_stream'][0]['m3u8'];
}
if($format == 'm3u8'){
header('Content-Type: text/json;charset=UTF-8');
$response = cURL($url, $method = 'GET', $header);
echo str_replace('/'.$configArr[$tvName][2].'_'.$qingxidu, 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?id=hztv&format=ts&url='.$configArr[$tvName][3].$configArr[$tvName][2].'_'.$qingxidu, $response);
}
if($format == 'ts'){
@header('Content-type: video/mp2t');
$url = $_GET['url'];
$response = cURL($url, $method = 'GET', $header);
echo $response;
}

浙公网安备 33010602011771号