icultivator 2013-11-18 15:32:05 11176次浏览 0条评论 4 0 0

原文:http://www.icultivator.com/p/4409.html

优酷开放API接口:http://v.youku.com/player/getPlayList/VideoIDS/视频ID

比如在浏览器地址栏输入ID为XNjI0NDMxNDc2的视频

http://v.youku.com/player/getPlayList/VideoIDS/XNjI0NDMxNDc2

返回的json格式的结果数据如下(部分,不完整):

youku

其中vidEncoded为编码的视频ID,本例中就是XNjI0NDMxNDc2;

logo为视频截图,title为视频标题,tags为视频标签,seconds为视频时长,等等。

本用例实现的思路如下:

1.用户输入一个视频的链接地址,然后给搜索按钮绑定一个click事件,调用ajax

2.通过一个ajax传递视频url到后台,在PHP后台通过正则解析出url中的视频id,使用curl调用开放API,获取返回的json数据;

3.将后台返回的json数据拼接成视频播放代码显示到相应的div中。

代码实现:

前台代码youku.php:

<?php
    /*
     * @author:农夫庄园
     * website:http://www.icultivator.com
     * url:http://www.icultivator.com/p/4409.html
     */
    ?>
    
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <input type="text" id="search_url" size="64"/><button onclick="getVideo();">搜索</button>
    <div id="video_div">
    
    </div>
    <script type="text/javascript">
        function getVideo(){
            var url = encodeURIComponent($("#search_url").val());
            $.post(
                "video.php",
                {url:url},
                function(result){
                    //获取视频缩略图
                    var img = decodeURIComponent(result.data[0].logo);
                    //获取视频标题
                    var title = decodeURIComponent(result.data[0].title);
                    //获取视频ID
                    var vid = decodeURIComponent(result.data[0].vidEncoded);
                    //获取视频时长
                    var seconds = decodeURIComponent(result.data[0].seconds);
                    $("#video_div").append("<h3>"+title+"</h3>");
                    $("#video_div").append("<div><embed src='http://player.youku.com/player.php/sid/"
                            +vid+"/v.swf' type='application/x-shockwave-flash' quality='high'
                            width='480' height='400' align='middle' allowScriptAccess='always'
                            allowFullScreen='true' mode='transparent'></embed></div>");
                    $("#video_div").append("<span>时长:"+seconds+"</span>");
                },'json'
            );
        }
</script>

后台代码video.php:

<?php
    
    /*
     * @author:农夫庄园
     * website:http://www.icultivator.com
     * url:http://www.icultivator.com/p/4409.html
     */
    
    if (isset($_POST['url'])):
        $url = rawurldecode($_POST['url']);
        $pattern = "/http:\/\/v\.youku\.com\/v_show\/id_([\w]+)\.html.*/";
        preg_match($pattern, $url, $arr);
        $vid = $arr[1];
        $yk_api = 'http://v.youku.com/player/getPlayList/VideoIDS/' . $vid;
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $yk_api);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11');
        $res = curl_exec($ch);
        curl_close($ch);
    
        echo $res;
    
    endif;
?>

效果图:

video

注:本文转自http://www.icultivator.com/p/4409.html

    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册