**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**
~~~
<?php
require '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
)
.....
~~~
**源码下载地址:[点击查看](https://github.com/xfdipzone/25.YTUserVideo)**
- 前言
- php Captcha 驗證碼類
- php 替换敏感字符串
- php返回数据格式化类
- php XML文件解释类
- php CSS Update Class
- PHPMailer - PHP email transport class
- PHP 遍历文件夹及文件类及处理类
- 自动登入google play下载app report
- php click captcha 验证码类
- php 获取页面中的指定内容类
- php 支持断点续传的文件下载类
- php 缩略图生成类,支持imagemagick及gd库两种处理
- php 根据url自动生成缩略图
- php 过滤html标记属性类
- php HTTP请求类,支持GET,POST,Multipart/form-data
- php Cookies 操作类
- php 密码生成类
- php main 与 iframe 相互通讯类(同域/跨域)
- php 根据url自动生成缩略图,并处理高并发问题
- php Timer 页面运行时间监测类
- php 双向队列类
- php 导出CSV抽象类
- php zip文件内容比较类
- php 获取/设置用户访问页面语言类
- php 获取Youtube某个User所有Video信息
- php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换
- php 版本处理类