最新可用的获取优酷youku视频缩略图大图的办法

Author: 陌小雨Date: 2015-10-09View: 143

前段时间,发现陌小雨之前推荐过的插件优酷视频收藏插件(请点击查看详情)获取不了视频缩略图大图了,于是百度了下,找到了原因,是因为优酷的api更新了,我们无需深究这过程中发生了哪些变化,只要知道如何正确使用就好了,wordpress大学给出了最新可用的获取优酷youku视频缩略图大图的办法,今天陌小雨在本地dux主题中已调用成功(文章中只要插入优酷的视频地址,首页就可以看到视频缩略图了,不需要额外设置缩略图,其他视频网站如土豆、56等按此方法应均能整合,做一个视频分享网站还是蛮不错的,有需要的话可以加入陌小雨的vip群咨询(目前群内成员已有8位,不求人多,只希望能互帮互助):特笔记如下:

/**
 * WordPress 获取优酷缩略图
 * 作者:倡萌@WordPress大学
 * 出处:http://www.wpdaxue.com/wordPress-get-youku-video-thumb.html
 * 整理收藏:陌小雨(https://dedewp.com/3201.html)
 */
// 该函数用于获取优酷api地址的内容,在下一个函数中要使用
function getSslPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
//该函数获取优酷视频缩略图
function get_youku_video_thumb(){
    global $post;
    //检查该文章是否已经存储过优酷缩略图地址
    if(get_post_meta($post->ID, '_youku_thumb', true )){
        //已存储,就直接调用
        $video_thumb = get_post_meta($post->ID, '_youku_thumb', true );
        //如果没有存储,我们就需要通过优酷API获取
    }else{
        //开发者的client_id,每个ID都有调用次数限制,所以这里可以申请多个使用
        //下面一行的2个 client_id 是一样的,陌小雨自己在用的,有效的,你可以自己申请后,填入不同的client_id
        $client_ids = array('4f0c55f64c8f370d','4f0c55f64c8f370d');
        //从所填入的 client_id 中随机选取一个
        $num = array_rand($client_ids,1);
        $client_id = $client_ids[$num];
        //在文章内容中比对获取优酷视频ID(在文章中单独一行添加视频播放页面的网址即可插入视频的)
        preg_match("#https://v.youku.com/v_show/id_(<video_id>[a-z0-9_=-]+)#i", $post->post_content, $matches);
        $cnt = count($matches);
        if ($cnt>0){
            //获取到视频ID后,通过API读取缩略图
            $link = "https://openapi.youku.com/v2/videos/show.jsonvideo_id={$matches['video_id']}&client_id={$client_id}";
            $cexecute= getSslPage($link);
            if ($cexecute) {
                //转换内容以供php读取
                $result = json_decode($cexecute,true);
                $json = $result['data'][0];
                //调用大缩略图 bigThumbnail 
                $video_thumb = $result['bigThumbnail'];
                if($video_thumb !=''){
                    //将调用都的缩略图地址存储到文章字段中,以供后面调用,不需反复调用API
                    update_post_meta( $post->ID, '_youku_thumb', $video_thumb );
                }
            }
        }else{
            //文章没有插入优酷视频的话,使用一个默认图片地址
            $video_thumb = 'http://127.0.0.1/wp-content/themes/dux/img/thumbnail.png';
        }
    }
    return $video_thumb;
}

值得注意的是:此缩略图调用需要在文章中插入的优酷视频地址(可直接在文本粘帖视频地址,然后切换到可视化选项,wordpress4.0以上)格式为:

http://v.youku.com/v_show/id_XMTM1MjkwMDQxMg==.html

代码中2个 client_id 是一样的,陌小雨自己在用的,有效的,你可以作为测试。

client_id 申请地址:http://open.youku.com/ 可以申请多个。