<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2017/11/3
* Time: 13:17
* desc: 抓取映客热门直播主播,仅第一页
* 原URL:http://baseapi.busi.inke.cn/live/LiveHotList
*/
namespace Library;
class AnchorYingKe
{
public static function getYingKeAnchor($url)
{
$anchor_list = self::getAnchorList($url);
$i = 0;
foreach ($anchor_list as $v) {
$ykuid = $v['third_party_uid'];
$ykliveid = $v['third_party_room_id'];
$live_stream_flv = self::getLiveStream($ykuid, $ykliveid);
if (empty($live_stream_flv)) {
continue;
}else{
$anchor_list[$i]['down_url'] = $live_stream_flv;
$i++;
}
}
return $anchor_list;
}
/**
* POST 请求
* @param string $url
* @param array $param
* @param boolean $post_file 是否文件上传
* @return string content
*/
public static function http_post($url, $param = [], $post_file = false, $isJson = false)
{
if (is_array($param) && count($param)) {
$param = json_encode($param);
}
$oCurl = curl_init();
if (stripos($url, "https://") !== FALSE) {
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
}
if (is_string($param) || $post_file) {
$strPOST = $param;
} else {
$aPOST = array();
foreach ($param as $key => $val) {
$aPOST[] = $key . "=" . urlencode($val);
}
$strPOST = join("&", $aPOST);
}
if (isset($_SESSION['CURLOPT_HTTPHEADER'])) {
curl_setopt($oCurl, CURLOPT_HTTPHEADER, $_SESSION['CURLOPT_HTTPHEADER']);
}
if ($isJson) {
curl_setopt($oCurl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($strPOST))
);
}
curl_setopt($oCurl, CURLOPT_URL, $url);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($oCurl, CURLOPT_POST, true);
curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
$sContent = curl_exec($oCurl);
$aStatus = curl_getinfo($oCurl);
curl_close($oCurl);
if ($sContent) {
return $sContent;
} else {
return false;
}
}
// 映客的热门主播地址为:http://baseapi.busi.inke.cn/live/LiveHotList
// 仅抓取第11-40个主播
public static function getAnchorList($url)
{
$html_info = self::http_post($url);
$decode_html_info = json_decode($html_info,true);
$anchor_list = [];
if ($decode_html_info['message'] == 'success') {
if($decode_html_info['data'][10]){
$temp_anchor = [];
for ($i = 11; $i <= 40; $i++) {
// 映客主播ID
$temp_anchor['third_party_uid'] = $decode_html_info['data'][$i]['uid'];
// 映客主播ID房间ID
$temp_anchor['third_party_room_id'] = $decode_html_info['data'][$i]['liveid'];
// 映客主播头像
$temp_anchor['avatar'] = $decode_html_info['data'][$i]['portrait'];
// 映客主播昵称
$temp_anchor['nick'] = $decode_html_info['data'][$i]['nick'];
// 映客直播标题
$temp_anchor['live_title'] = $decode_html_info['data'][$i]['name'];
// 映客主播性别
$temp_anchor['gender'] = $decode_html_info['data'][$i]['gender'];
// 映客直播地点
$temp_anchor['live_address'] = $decode_html_info['data'][$i]['city'];
array_push($anchor_list, $temp_anchor);
}
}else{
$count = count($decode_html_info['data']);
for ($i = 0; $i < $count; $i++) {
// 映客主播ID
$temp_anchor['third_party_uid'] = $decode_html_info['data'][$i]['uid'];
// 映客主播ID房间ID
$temp_anchor['third_party_room_id'] = $decode_html_info['data'][$i]['liveid'];
// 映客主播头像
$temp_anchor['avatar'] = $decode_html_info['data'][$i]['portrait'];
// 映客主播昵称
$temp_anchor['nick'] = $decode_html_info['data'][$i]['nick'];
// 映客直播标题
$temp_anchor['live_title'] = $decode_html_info['data'][$i]['name'];
// 映客主播性别
$temp_anchor['gender'] = $decode_html_info['data'][$i]['gender'];
// 映客直播地点
$temp_anchor['live_address'] = $decode_html_info['data'][$i]['city'];
array_push($anchor_list, $temp_anchor);
}
}
}
return $anchor_list;
}
// 映客获取单个主播地址为:http://baseapi.busi.inke.cn/live/LiveInfo?channel_id=&uid=71167152&liveid=&_t=
public static function getLiveStream($ykuid, $ykliveid)
{
$process = curl_init('http://baseapi.busi.inke.cn/live/LiveInfo?channel_id=&uid=' . $ykuid . '&liveid=' . $ykliveid . '&_t=');
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
$return = curl_exec($process);
curl_close($process);
$decode_html_info = json_decode($return);
$url = '';
if ($decode_html_info->message = 'success') {
if(isset($decode_html_info->data->live_addr[0])){
if(isset($decode_html_info->data->live_addr[0]->stream_addr)){
$url = $decode_html_info->data->live_addr[0]->stream_addr;
}
/*if(isset($decode_html_info->data->live_addr[0]->rtmp_stream_addr)){
return $decode_html_info->data->live_addr[0]->rtmp_stream_addr;
}*/
}
}
//返回空即为已停止直播
return $url;
}
}