13071077710
您的当前位置: 首页 > wordpress > wordpress 获取优酷视频缩略图

wordpress 获取优酷视频缩略图

时间: 2016-7-20

文章教程来源wp大学

  1. 首先要拥有一个优酷帐号,并申请加入视频云,点击这里注册优酷帐号
  2. 一个开发者帐号可以申请多个应用(client_id),点击这里申请
  3. 应用自动生效,可作为开发和测试使用。应用分为四个等级,普通、中级、高级和合作级。升级后不同等级应用可调用不同API。
  4. API访问频率限制:普通——每小时1000次,中级——每小时5万次,高级——每小时20万次,合作——无限制

有了 client_id,获取到的信息如下:

{
 "id": "XMTY0OTc5MjYyNA==",
 "title": "\u5bcc\u5f3a\u673a\u68b0\u538b\u7403\u673a\u6210\u54c1\u7403\u6297\u538b\u89c6\u9891",
 "link": "http:\/\/v.youku.com\/v_show\/id_XMTY0OTc5MjYyNA==.html",
 "thumbnail": "http:\/\/r3.ykimg.com\/05420408578DE0556A0A4C046D723F3D",
 "bigThumbnail": "http:\/\/r3.ykimg.com\/05410408578DE0556A0A4C046D723F3D",
 "duration": "32.00",
 "category": "\u751f\u6d3b",
 "state": "normal",
 "created": "2016-07-19 15:59:04",
 "published": "2016-07-19 16:07:34",
 "description": "\u5bcc\u5f3a\u673a\u68b0\u4e13\u4e1a\u7684\u538b\u7403\u673a\u8bbe\u5907\u751f\u4ea7\u4f01\u4e1a\u3002",
 "player": "http:\/\/player.youku.com\/player.php\/sid\/XMTY0OTc5MjYyNA==\/partnerid\/8db33ec3161f90ac\/v.swf",
 "public_type": "all",
 "copyright_type": "original",
 "user": {
 "id": "300690742",
 "name": "\u5bcc\u5f3a\u673a\u68b0\u6210\u578b\u8bbe\u5907",
 "link": "http:\/\/v.youku.com\/user_show\/id_UMTIwMjc2Mjk2OA==.html"
 },
 "tags": "\u5bcc\u5f3a\u538b\u7403\u673a,\u6297\u538b\u8bd5\u9a8c",
 "view_count": 6,
 "favorite_count": "0",
 "comment_count": "0",
 "up_count": "0",
 "down_count": "0",
 "operation_limit": [],
 "streamtypes": ["hd2", "flvhd", "hd", "3gphd", "hd3"],
 "is_panorama": "0",
 "ischannel": "0",
 "source": {
 "id": "1",
 "name": "\u4f18\u9177\u7ad9\u5185WEB\u4e0a\u4f20",
 "link": "http:\/\/www.youku.com\/v_up\/"
 }
}

其中 thumbnail 和 bigThumbnail 即为缩略图信息,前者小后者大。

下面分享下具体的代码样例,懂代码的看下注释应该就明白了:

// 该函数用于获取优酷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_ids = array('d78e1f9c33332e3','490ad1e933338935');
        //从所填入的 client_id 中随机选取一个
        $num = array_rand($client_ids,1);
        $client_id = $client_ids[$num];
        //在文章内容中比对获取优酷视频ID(在文章中单独一行添加视频播放页面的网址即可插入视频的)
        preg_match("#http?://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 = "http://openapi.youku.com/v2/videos/show.json?video_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://默认图片的网址,请自己填写';
        }
    }
    return $video_thumb;
}

注:请务必在 $client_ids 后填入你申请到的应用key(client_id),否则无法正常使用!!

在实际使用中,我们可以使用一下代码调用来输出视频缩略图的网址。

<?php echo get_youku_video_thumb(); ?>

 

Copyright © 2013-2019 子歇    版权所有   网站地图