php 获取Youtube某个User所有Video信息

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

php 获取Youtube某个User所有Video信息


因工作需要,获取Youtube上某个用户的所有视频信息,写了这个类,分享给大家。


YTUserVideo.class.php

<?php/** 获取Youtube某个User所有Video信息*   Date:   2015-01-08*   Author: fdipzone*   Ver:    1.0**   Func:*   public  getVideosInfo 获取用户所有视频信息*   private getVideoNum   获取用户视频数量*   private getVideoInfo  获取视频信息*   private getContent    视频简介整理*   private unescape      unicode转中文*/class YTUserVideo{ // class start    private $_user = ''; // 用户名称    /** 初始化    * @param String $user 用户名称    */    public function __construct($user=''){        if($user!=''){            $this->_user = $user;        }else{            throw new Exception("user is empty", 1);        }    }    /** 获取user所有视频信息    * @return Array    */    public function getVideosInfo(){        $info = array();        // 获取视频数量        $videonum = $this->getVideoNum();        // 获取视频信息        for($i=1; $i<=$videonum; $i++){            $videoInfo = $this->getVideoInfo($i);            array_push($info, $videoInfo);        }        return $info;    }    /** 获取用户视频数量    * @return int    */    private function getVideoNum(){        $videos = simplexml_load_file('http://gdata.youtube.com/feeds/base/users/'.$this->_user.'/uploads?max-results=1&start-index=1');        $videonum = $videos->children('openSearch', true)->totalResults;        return $videonum;    }    /** 获取视频信息    * @param  String $index 视频的序号    * @return Array    */    private function getVideoInfo($index){        // 获取视频id及简介        $video = simplexml_load_file('http://gdata.youtube.com/feeds/base/users/'.$this->_user.'/uploads?max-results=1&start-index='.$index);        $videoId = str_replace('http://gdata.youtube.com/feeds/base/videos/', '', (string)($video->entry->id));        $videoContent = $this->getContent($video->entry->content);        $videoPublish = strtotime($video->entry->published);        // 根据视频id获取视频信息        $content = file_get_contents('http://youtube.com/get_video_info?video_id='.$videoId);        parse_str($content, $ytarr);        $info = array();        $info['id'] = $videoId;        $info['thumb_photo'] = $ytarr['thumbnail_url'];       // 缩略图        $info['middle_photo'] = $ytarr['iurlmq'];             // 中图        $info['big_photo'] = $ytarr['iurl'];                  // 大图        $info['title'] = $ytarr['title'];                     // 标题        $info['content'] = $videoContent;                     // 简介        $info['publish_date'] = $videoPublish;                // 发布时间        $info['length_seconds'] = $ytarr['length_seconds'];   // 视频长度(s)        $info['view_count'] = $ytarr['view_count'];           // 观看次数        $info['avg_rating'] = $ytarr['avg_rating'];           // 平均评分        $info['embed'] = '//www.youtube.com/embed/'.$videoId; // Embed        return $info;    }    /** 获取视频简介    * @param  String $content 内容    * @return String    */    private function getContent($content){        preg_match('/<span>(.*?)<\/span>/is', $content, $matches);        return $this->unescape($matches[1]);    }    /* unicode 转 中文    * @param  String $str unicode 字符串    * @return String    */    private function unescape($str) {        $str = rawurldecode($str);        preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/U",$str,$r);        $ar = $r[0];        foreach($ar as $k=>$v) {            if(substr($v,0,2) == "%u"){                $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,-4)));            }elseif(substr($v,0,3) == "&#x"){                $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,3,-1)));            }elseif(substr($v,0,2) == "&#") {                $ar[$k] = iconv("UCS-2BE","UTF-8",pack("n",substr($v,2,-1)));            }        }        return join("",$ar);    }} // class end?>

demo.php

<?phprequire 'YTUserVideo.class.php';$obj = new YTUserVideo('GOtriphk'); // 用户名称GOtriphk https://www.youtube.com/user/GOtriphk/videos$videosInfo = $obj->getVideosInfo();echo '<pre>';print_r($videosInfo);echo '</pre>';?>

输出:

Array(    [0] => Array        (            [id] => jYDwFozp6PY            [thumb_photo] => http://i.ytimg.com/vi/jYDwFozp6PY/default.jpg            [middle_photo] => http://i.ytimg.com/vi/jYDwFozp6PY/mqdefault.jpg            [big_photo] => http://i.ytimg.com/vi/jYDwFozp6PY/hqdefault.jpg            [title] => 【比卡超ssss突襲尖咀!!!】香港比卡超展            [content] => 香港有比卡超展,同場會展出全球最大、高13米嘅「比卡超立體飛船」,仲會有700隻唔同角色嘅精靈現身,當然亦唔小得又勁多期間限定紀念品可以優先搶以及由橫濱專程到港嘅聖誕版比卡超同粉絲全接觸,總之飛唔飛都一樣有得玩!The ONE x 寵物小精靈 聖誕夢想飛行日期:2014年11月9日至2015年1月4日時間:10am-10pm地點:The ONE UG2 中庭            [publish_date] => 1415257662            [length_seconds] => 124            [view_count] => 603            [avg_rating] => 0.0            [embed] => //www.youtube.com/embed/jYDwFozp6PY        ).....


源码下载地址:点击查看


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值