解析某个94aw演示备忘

//一、分页数:电影
function importFilmPages($vtype, $cate_code, $cate_name)
{
    for($i = 2; $i >= 1; $i--)
    {
        echo $cate_code.' page='.$i.PHP_EOL;
        importVideoList($vtype, $i, $cate_code, $cate_name);
    }
}

//一、分页数:恐怖
function importHorrorPages($vtype, $cate_code, $cate_name)
{
    for($i = 2; $i >= 1; $i--)
    {
        echo $cate_code.' page='.$i.PHP_EOL;
        importVideoList($vtype, $i, $cate_code, $cate_name);
    }
}

//一、分页数:电视剧
function importDianshijuPages($vtype, $cate_code, $cate_name)
{
    for($i = 2; $i >= 1; $i--)
    {
        echo $cate_code.' page='.$i.PHP_EOL;
        importVideoList($vtype, $i, $cate_code, $cate_name);
    }
}

//一、分页数:综艺
function importZongyiPages($vtype, $cate_code, $cate_name)
{
    for($i = 2; $i >= 1; $i--)
    {
        echo $cate_code.' page='.$i.PHP_EOL;
        importVideoList($vtype, $i, $cate_code, $cate_name);
    }
}

//一、分页数:动漫
function importDongmanPages($vtype, $cate_code, $cate_name)
{
    for($i = 2; $i >= 1; $i--)
    {
        echo $cate_code.' page='.$i.PHP_EOL;
        importVideoList($vtype, $i, $cate_code, $cate_name);
    }
}

//二、视频列表
function importVideoList($vtype, $page, $cate_code, $cate_name)
{
    global $apisever_url;
    //第一步:获取电影栏目中某个分页列表
    $one_url = $apisever_url . '/type/' . $vtype . '/' . $page . '.html';
    $one_htmldata = curl_request($one_url);

    // 新建DOM实例
    $one_html = new simple_html_dom();
    $one_html->load($one_htmldata);
    //echo $one_html;

    foreach($one_html->find('div.movie-item') as $dv) 
    {
        $vid = $dv->find('a', 0)->href;
        $vid = str_replace('/show/', '', $vid);
        $vid = str_replace('.html', '', $vid);
        
        echo $vid.PHP_EOL;
        //setVideoStatus($vid);

        if(!empty($vid)) importVideoData($vid, $cate_code, $cate_name);
    }

}

//三、视频内容
function importVideoData($vid, $cate_code, $cate_name)
{
    global $mbdb, $apisever_url;
    
    //第一步:获取某部电影
    $media_url = $apisever_url . '/show/' . $vid . '.html';
    $media_htmldata = curl_request($media_url);

    // 新建DOM实例
    $media_html = new simple_html_dom();
    $media_html->load($media_htmldata);
    //echo $one_html;

    //媒体名称
    $media_name = $media_html->find('li.active', 1)->innertext;
    $media_name = str_replace('\\', '', $media_name);
	$media_name = str_replace('\'', '', $media_name);
    
    //剧情介绍
    $description = $media_html->find('p.summary', 0)->innertext;
    $description = str_replace('<br />', '', $description);
    $description = str_replace('  ', '', $description);
    $description = str_replace('\'', '', $description);
    
    //封面图片地址
    $coverimg = $media_html->find('img.img-thumbnail', 0)->src;
    $coverimg = trim($coverimg);

    if(empty($media_html->find('td.span2', 0)->next_sibling())) return;
    //导演
    $director = $media_html->find('td.span2', 0)->next_sibling()->innertext;
    $director = str_replace('\\', '', $director);
	$director = str_replace('\'', '', $director);

    //主演
    $playactor = $media_html->find('td.span2', 1)->next_sibling()->innertext;
    $pos = strrpos($playactor, '<a');
    if($pos) {
        $playactor = trim(substr($playactor, 0, $pos)); 
    }
    $playactor = str_replace('\\', '', $playactor);
	$playactor = str_replace('\'', '', $playactor);

    //类型
    $mtype = $media_html->find('td.span2', 2)->next_sibling()->innertext;

    //制片地区
    $media_area = $media_html->find('td.span2', 3)->next_sibling()->innertext;

    //更新状态
    $media_status = $media_html->find('td.span2', 4)->next_sibling()->innertext;

    //上映日期
    $playdate = $media_html->find('td.span2', 5)->next_sibling()->innertext;
    $pos = strrpos($playdate, '(');
    if($pos) {
        $playdate = trim(substr($playdate, 0, $pos)); 
    }    
    $playdate = str_replace('\\', '', $playdate);
	$playdate = str_replace('\'', '', $playdate);

    //评分
    $mark = $media_html->find('td.span2', 6)->next_sibling();
    if(!empty($mark)) $mark = $mark->find('a', 0)->innertext;
    $pos = strrpos($mark, '<i');
    if($pos) {
        $mark = trim(substr($mark, 0, $pos)); 
    }

    //年代
    $years = $media_html->find('span.movie-year', 0)->innertext;
    $years = str_replace('(', '', $years);
    $years = str_replace(')', '', $years);
    $years = (int)str_replace('-', '', $years);

    //更新日期
    $uptdate = $media_html->find('div[style=margin:10px auto;]', 0)->innertext;
    $uptdate = str_replace('<em>更新时间:', '', $uptdate);
    $uptdate = str_replace('</em>', '', $uptdate);
    $uptdate = trim($uptdate);
    if(!empty($uptdate)) {
        $lastuptdate = $uptdate.' '.date('H:i:s');
    } else {
        // 当前日期格式输出
        $lastuptdate = date("Y-m-d H:i:s");
    }

    if(empty($playdate)) $playdate = $lastuptdate;

    //播放页地址
    $video_url = $apisever_url . $media_html->find('div.online-button', 0)->find('a', 0)->href;
    
    //剧集地址
    $ul_juji_arr = $media_html->find('ul.dslist-group', 0)->find('li');

    //总剧集数
    $media_juji = 1;

    //已出剧集数
    $media_cnt = 1;

    if($cate_code != 'film') {
        //$media_juji = (int)count($ul_juji_arr);
        if(strstr($media_status, ' /')) {
            $media_juji_arr = explode('/', $media_status);
            //已出剧集数
            $media_cnt = str_replace('更新至', '', trim($media_juji_arr[0]));
            $media_cnt = (int)str_replace('集', '', $media_cnt);

            //总剧集数
            $media_juji = str_replace('共', '', trim($media_juji_arr[1]));
            $media_juji = (int)str_replace('集', '', $media_juji);
        }
    }
        
    //媒体表
    $tablename_a = '94aw_media';
    //视频表
    $tablename_b = '94aw_video';

    //新增数据
    $mediatotalrec = getsqltotal($tablename_a);
    $mediamaxindex = $mediatotalrec + 1;
    $mediaobjectId = $tablename_a."_".$mediamaxindex;

    $media_f_index = md5();

    $source = '94aw';

    $media_f_index = md5($source.$vid);

    //媒体结构体
    $mediaadd_arr = array(
        "objectId" => "'".$mediaobjectId."'",   //对象ID
        "cate_name" => "'".$cate_name."'",   //类别名
        "cate_code" => "'".$cate_code."'",   //类别码
        "media_name" => "'".$media_name."'",    //媒体名称
        "description" => "'".$description."'",  //剧情介绍
        "media_area" => "'".$media_area."'",    //制片地区
        "mtype" => "'".$mtype."'",        //类型
        "coverimg" => "'".$coverimg."'", //封面图片地址
        "media_url" => "'".$media_url."'",    //媒体地址
        "director" => "'".$director."'",     //导演
        "playactor" => "'".$playactor."'",    //主演
        "years" => $years,        //年代
        "media_status" => "'".$media_status."'", //更新状态
        "mark" => $mark,     //评分
        "media_juji" => $media_juji,   //总剧集数
        "media_cnt" => $media_cnt,    //已出剧集数
        "`index`" => $mediamaxindex,    //唯一索引
        "source" => "'".$source."'",       //来源
        "source_id" => $vid,        //来源ID
        "playdate" => "'".$playdate."'",         //上映日期
        "f_index" => "'".$media_f_index."'",
        "lastuptdate" => "'".$lastuptdate."'",   //更新时间
        "syncdate" => "NOW()"        //同步时间
    );

    //var_dump($mediaadd_arr);
    //如果媒体已存在,则不添加
    /*$db_mediawhere = array(
        //"media_name = '".$media_name."'",
        "source = '".$source."'",
        "source_id = ".$vid
    );
    $db_mediaarr = qrysql_94aw_media("objectId", $db_mediawhere);
    //var_dump($db_mediaarr);
    if(!empty($db_mediaarr)) {} else {*/
        $db_mediaid = insertInfo($tablename_a, $mediaadd_arr, null, 'ignore');
    //}
        
    for($j = 0; $j < count($ul_juji_arr); $j++) 
    {
        $jujili = $ul_juji_arr[$j];
        //如果是电影,则配置主要视频页
        if($j == 0) $main = 1;
        else $main = 0;

        //剧集地址
        $juji_url = $apisever_url . $jujili->find('a', 0)->href;
        //剧集名称
        $video_remark = $jujili->find('a', 0)->innertext;
        $video_remark = str_replace('\\', '', $video_remark);
	    $video_remark = str_replace('\'', '', $video_remark);

        //新增数据
        $video_totalrec = getsqltotal($tablename_b);
        $video_maxindex = $video_totalrec + 1;
        $video_objectId = $tablename_b."_".$video_maxindex;

        $video_f_index = md5($video_remark.$source.$vid);

        //视频结构体
        $video_add_arr = array(
            "objectId" => "'".$video_objectId."'",
            "remark" => "'".$video_remark."'",
            "video_url" => "'".$video_url."'",  //视频详情页地址
            "juji_url" => "'".$juji_url."'",    //剧情地址
            "main" => $main,
            "cate_code" => "'".$cate_code."'",
            "media" => "'".$mediaobjectId."'",
            "`index`" => $video_maxindex,
            "source" => "'".$source."'",
            "source_id" => $vid,
            "f_index" => "'".$video_f_index."'",
            "lastuptdate" => "'".$lastuptdate."'",
            "syncdate" => "NOW()"
        );

        var_dump($video_add_arr);
        //如果媒体已存在,则不添加
        /*$db_video_where = array(
            "remark = '".$video_remark."'",
            "source = '".$source."'",
            "source_id = ".$vid
        );
        $db_video_arr = qrysql_94aw_video("objectId", $db_video_where);

        if(!empty($db_video_arr)) {} else {*/
            $db_videoid = insertInfo($tablename_b, $video_add_arr, null, 'ignore');
        //}
    }
}

//更新视频可用状态
function setVideoStatus($vid, $juji)
{
    $videoUrl = getVideoRealUrl($vid, $juji);
    if(!empty($videoUrl)) {

    } else {
        $tablename = '94aw_media';
        $status = 'prepare';    //发布状态:编辑中
        $mediaupt = array(
            "`status` = '".$status."'"
        );

        $where = array(
            "source_id = ".$vid
        );
        $uptres = updateInfo($tablename, $mediaupt, $where);
    }
}

//入库:播放源
function importPlayUrl()
{
    $tablename = '94aw_play';

    //总记录数
    $totalvideos = getsqltotal('94aw_video');
    for($i = 1, $j = 1; $i <= ceil($totalvideos / 1000); $i++) {
    //for($i = 1, $j = 1; $i <= 1; $i++) {
        $k = $i*1000 + 1;
        //$k = 1;
        $where_qry = array(
            "id >= ".$j,
            "id <= ".$k
        );
        $j = $k;
        var_dump($where_qry);
        //先查询得到APP名称
        $videoinfo_arr = qrysql_94aw_video('id', $where_qry);
        if(!empty($videoinfo_arr)) {
            foreach($videoinfo_arr as $videoinfo)
            {
                $vid = $videoinfo['source_id'];
                $video = $videoinfo['video'];
                $media = $videoinfo['media'];
                $juji_url = $videoinfo['juji_url'];
                $main = 0;  //是否主要:0-否,1-是
                $parse = 0; //是否解析:0-否,1-是
                $source = '94aw';
                $source_id = $vid;                

                if(!empty($juji_url)) $playUrl = getVideoRealUrlByVideo($juji_url);

                if(!empty($playUrl)) {
                    //新增数据
                    $play_totalrec = getsqltotal($tablename);
                    $play_maxindex = $play_totalrec + 1;
                    $play_objectId = $tablename."_".$play_maxindex;

                    $f_index = md5($playUrl);

                    $play_add_arr = array(
                        "objectId" => "'".$play_objectId."'",
                        "playUrl" => "'".$playUrl."'",
                        "main" => $main,
                        "parse" => $parse,
                        "video" => "'".$video."'",
                        "media" => "'".$media."'",
                        "`index`" => "'".$play_maxindex."'",
                        "source" => "'".$source."'",
                        "source_id" => "'".$source_id."'",
                        "f_index" => "'".$f_index."'",
                        "createdAt" => "NOW()",
                        "updatedAt" => "NULL",
                    );

                    //如果媒体已存在,则不添加
                    /*$db_play_where = array(
                        "playUrl = '".$playUrl."'",
                        "video = '".$video."'",
                        "media = '".$media."'"
                    );
                    $db_play_arr = qrysql_94aw_play("objectId", $db_play_where);

                    if(!empty($db_play_arr)) {} else {*/
                        $db_playid = insertInfo($tablename, $play_add_arr, null, 'ignore');
                    //}
                }
            }
        }
    }
}

//动态获取视频URL地址
function getVideoRealUrl($vid, $juji)
{
    global $apisever_url;
    $url = $apisever_url . '/play/' . $vid.'/1/'.$juji.'.html';
    getVideoRealUrlByVideo($url);
}

//传入URL地址
function getVideoRealUrlByVideo($two_url)
{ 
    //视频真实URL地址
    $videoUrl = '';
    //=================================================================
    //第一步:获取该电影的播放数据
    $two_htmldata = curl_request($two_url);

    // 新建DOM实例
    $two_html = new simple_html_dom();
    $two_html->load($two_htmldata);
   
    //=================================================================
    //第二步:获取该电影的视频地址
    $three_url = $two_html->find('iframe', 0)->src;  
    $three_htmldata = curl_request($three_url);

    // 新建DOM实例
    $three_html = new simple_html_dom();
    $three_html->load($three_htmldata);

    if(strstr($three_html, '<iframe')) {
        //内嵌其他外链接
        $four_url = $three_html->find('iframe', 0)->src;

        $videoUrl = $four_url;
    }

    return $videoUrl;
}

//二级页面处理
function getNextPageUrl($three_url)
{
    $three_htmldata = curl_request($three_url);

    // 新建DOM实例
    $three_html = new simple_html_dom();
    $three_html->load($three_htmldata);
        
    //如果有JS段部分,则表示为不需要Flash播放器的视频
    if(strstr($three_html, '<script type="text/javascript">')) {
        //播放器代码
        $playjs = $three_html->find('div[id=a1]', 0)->next_sibling();
        //拆解
        $play_arr = explode('\'', $playjs);
        if(!empty($play_arr) && count($play_arr) > 1) {
            //MP4资源地址
            $videoUrl = $play_arr[1];
        }
    } else if(strstr($three_html, '<iframe')) {
        //内嵌其他外链接
        $four_url = $three_html->find('iframe', 0)->src;
        $four_htmldata = curl_request($four_url);
                
        // 新建DOM实例
        $four_html = new simple_html_dom();
        $four_html->load($four_htmldata);

        //跳转后的域名主机
        $url_arr = parse_url($four_url);
        $sumbit_url = $url_arr['scheme'].'://'.$url_arr['host'].$url_arr['path'];
        
        //隐藏文本框中的MD5值
        //$hdMd5 = $four_html->find('div[id=error]', 0)->next_sibling()->value;
        if(strstr($four_html, '<script type="text/javascript">')) {
            if(!empty($four_html->find('div[id=error]', 0))) {
                $youkujs = $four_html->find('div[id=error]', 0)->next_sibling()->next_sibling();
                //拆解
                $post_arr = explode('iqiyicip}', $youkujs);
                if(!empty($post_arr)) {
                    $target_obj_url = "url.php";
                    $pp_arr = explode('"'.$target_obj_url.'", {', $post_arr[0]);
                    if(!empty($pp_arr) && count($pp_arr) > 1) {
                        $postjson = '{'.$pp_arr[1].'""}';
                    
                        $postjson = str_replace('\'', '"', $postjson);
                        $returnCitySN = getLocalServerAreaIP();
                        if(!empty($returnCitySN)) $serveip = $returnCitySN['cip'];
                        else $serveip = getLocalServerOuterIP();
                        $postjson = str_replace('returnCitySN.cip', '"'.$serveip.'"', $postjson);

                        $eval_arr = explode('eval("', $post_arr[1]);
                        $md5_ascii = explode('");', $eval_arr[1]);
                        //ASCII转换
                        $md5_arr = explode('\x', trim($md5_ascii[0]));                
                        $hdMd5 = '';
                        foreach($md5_arr as $mvr) {
                            $md5_ch = chr(hexdec($mvr));  
                            $hdMd5 .= $md5_ch;
                        }
                        
                        $hdMd5 = str_replace("$('#hdMd5').val('", "", $hdMd5);
                        $hdMd5 = str_replace("');", "", $hdMd5);
                        $hdMd5 = str_replace("\n", "", $hdMd5);
                        $postjson = str_replace('$("#hdMd5").val()', '"'.trim($hdMd5).'"', $postjson); 
                        //echo $postjson;
                        $param_arr = json_decode($postjson, true);                
                        //var_dump($param_arr);
                        //$sumbit_url = "https://apis.tianxianle.com/youku/url.php"; 
                        $sumbit_url .= $target_obj_url; 
                        $http_url = $three_url;
                        //echo $sumbit_url;
                        /*
                        //请求内容:
                        $post_data = array(
                            "id" => '20743e2a02c06df62c6a6e7ba5f1985e',
                            "type" => 'ppbox',
                            "siteuser" => '',
                            "md5" => 'b930212adabd2584394c33e43257036e',
                            "hd" => '',
                            "lg" => '',
                            "cip" => '60.186.203.104'
                        );

                        //返回内容:
                        {
                            "msg": "200",
                            "ext": "xml",
                            "site": "pptvyun",
                            "url": "https:\/\/apis.tianxianle.com\/youku\/url.php?xml=20743e2a02c06df62c6a6e7ba5f1985e&md5=b930212adabd2584394c33e43257036e&type=ppbox&hd=cq&wap=0&siteuser=&lg=&sohuuid="
                        }
                        */

                        list($return_code, $return_content) = curl_form($param_arr, $sumbit_url, $http_url);
                        $json_arr = json_decode($return_content, true);
                        //var_dump($json_arr);
                        //echo $json_arr['url'];
                        
                        if(!empty($json_arr) && array_key_exists('url', $json_arr) && strstr($json_arr['url'], 'xml=')) {
                            $seven_htmldata = curl_request($json_arr['url']);
                            echo 'seven_htmldata = '.$seven_htmldata;
                            //解析返回的XML结构体
                            //header("Content-type: text/xml");
                            $postStr = str_replace('<?xml version="1.0" encoding="utf-8"?>', '', $seven_htmldata);
                            //$postStr = '<ckplayer> <Name> <![CDATA[解析插件 Ver2.0]]></Name> <flashvars>{f-&gt;https://apis.tianxianle.com/youku/url.php?[$pat]}{a-&gt;xml=20743e2a02c06df62c6a6e7ba5f1985e&amp;type=ppbox&amp;wap=0&amp;siteuser=&amp;md5=b930212adabd2584394c33e43257036e&amp;hd=gq}</flashvars><video><file><![CDATA[http://58.220.11.143/w/20743e2a02c06df62c6a6e7ba5f1985e.mp4?type=ppbox.launcher&key=cc8ee106332ffc70e3b53399b8b3880e]]></file><size>0</size><seconds>0</seconds></video></ckplayer>';
                            $xml = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                            //print_r($xml);
                            $videoUrl = $xml->children()[2]->children()[0];
                        }
                    }
                }
            }
        }
    }
}

//媒体地区清单
function import_media_area()
{
    $tablename = '94aw_marea';

    $qry_marea = qrysql_94aw_areabymedia();

    foreach($qry_marea as $marea)
    {
        //处理
        $marea_name_arr = explode('/', rawurldecode($marea['media_area']));
        foreach($marea_name_arr as $marea_name)
        {
            $mareaadd_arr = array(
                "marea_name" => "'".trim($marea_name)."'",   //类别名
            );

            $db_mareaid = insertInfo($tablename, $mareaadd_arr, null, 'yes');
        }
    }

}

//媒体类型清单
function import_media_type()
{
    $tablename = '94aw_mtype';

    $qry_mtype = qrysql_94aw_typebymedia();

    foreach($qry_mtype as $mtype)
    {
        //处理
        $mtype_name_arr = explode('/', rawurldecode($mtype['mtype']));
        foreach($mtype_name_arr as $mtype_name)
        {
            $mtypeadd_arr = array(
                "mtype_name" => "'".trim($mtype_name)."'",   //类别名
            );

            $db_mtypeid = insertInfo($tablename, $mtypeadd_arr, null, 'yes');
        }
    }

}

//媒体导演清单
function import_media_director()
{
    $tablename = '94aw_mdirector';

    $qry_mdirector = qrysql_94aw_directorbymedia();

    foreach($qry_mdirector as $mdirector)
    {
        //处理
        $mdirector_name_arr = explode('/', rawurldecode($mdirector['director']));
        foreach($mdirector_name_arr as $mdirector_name)
        {
            $mdirectoradd_arr = array(
                "mdirector_name" => "'".trim($mdirector_name)."'",   //类别名
            );

            $db_mdirectorid = insertInfo($tablename, $mdirectoradd_arr, null, 'yes');
        }
    }

}

//媒体演员清单
function import_media_playactor()
{
    $tablename = '94aw_mplayactor';

    $qry_mplayactor = qrysql_94aw_playactorbymedia();

    foreach($qry_mplayactor as $mplayactor)
    {
        //处理
        $mplayactor_name_arr = explode('/', rawurldecode($mplayactor['playactor']));
        foreach($mplayactor_name_arr as $mplayactor_name)
        {
            $mplayactoradd_arr = array(
                "mplayactor_name" => "'".trim($mplayactor_name)."'",   //类别名
            );

            $db_mplayactorid = insertInfo($tablename, $mplayactoradd_arr, null, 'yes');
        }
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值