php youtube 信息,如何通过php 获取Youtube某个User所有Video信息

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('/(.*?)/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})|.{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) == ""){

$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 '

';

print_r($videosInfo);

echo '

';

?>

输出: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

)

.....

本文讲解了如何通过php 获取Youtube某个User所有Video信息,更多相关内容请关注php中文网。

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值