NOW直播解析源码

<?php
//https://now.qq.com/cgi-bin/now/web/room/get_room_info_v2?room_id=1983753
//https://now.qq.com/cgi-bin/now/web/user/get_personal_live_rcmd_read?_=0.6791041731369902&bkn=869715713&num=19&tab_id=2
//https://now.qq.com/pc/index.html?roomid=1210251521
//https://now.qq.com/h5/index.html?roomid=79072731
//https://now.qq.com/cgi-bin/now/web/room/get_live_room_url?platform=4&room_id=1210676514
//require_once(“../include/global.inc.php");
echo json_encode(Now::parse($url));
/**
* 
*/
class Now
{
    public static function parse($url)
    {
        parse_str(parse_url($url)[“query"]);
        if($roomid){
            return self::get_room_info_v2($roomid);
        }
    }
    public static function get_room_info_v2($room_id)
    {
        $api = “https://now.qq.com/cgi-bin/now/web/room/get_room_info_v2?room_id=$room_id";
        $content = self::curl($api);
        $data = json_decode($content,true)[“result"];
        $is_on_live = $data[“is_on_live"];
        if($is_on_live){//是否直播
            return self::get_live_room_url($room_id);
        }else{
            if(!emptyempty($data[“vid"])){
                $vid = $data[“vid"];
                return self::get_record_room_info($vid);
            }else{
                return GlobalBase::get_unknown_video();
            }
        }
    }
    public static function get_record_room_info($vid)
    {
        $api = “https://now.qq.com/cgi-bin/now/web/room/get_record_room_info?vid=$vid";
        $content = self::curl($api);
        $data = json_decode($content,true)[“result"];
        $record_video_url = $data[“record_video_url"];
        $video_cover_url = $data[“video_cover_url"];
        $videoinfo[“poster"] = $video_cover_url;
        $videoinfo[“video"][“file"] = $record_video_url;
        $videoinfo[“video"][“type"] = “video/m3u8";
        return $videoinfo;
    }
    public static function get_live_room_url($room_id)
    {
        $api = “https://now.qq.com/cgi-bin/now/web/room/get_live_room_url?platform=4&room_id=$room_id";
        $content = self::curl($api);
        $data = json_decode($content,true)[“result"];
        $videoURLList = $data[“videoURLList"];
        foreach ($videoURLList as $key => $value) {
            if (GlobalBase::is_ipad()) {
                $videoinfo[“url"]= $value;
                break;
            }else{
                switch ($key) {
                    case 0:$def = “自动";break;
                    case 1:$def = “高清";break;
                    case 2:$def = “标清";break;
                    case 3:$def = “流畅";break;
                }
                $videoinfo[“live"] = true;
                $video[0] = $value;
                $video[1] = “video/m3u8";
                $video[2] = $def;
                $video[3] =  $key != 0 ? 0 : 10;
                $videoinfo[“video"][$key] = $video;
            }
        }
        return $videoinfo;
    }
    public static function curl($url)
    {
        $params[“ua"] = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36";
        return GlobalBase::curl($url,$params);
    }
}
 ?>