我使用Zend框架访问YouTube数据API。下面的功能循环播放我帐户中特定播放列表中的所有视频,并统计视图计数。现在我只有一个视频。
当查看计数达到一定数量(用于测试目的,5视图),我想将视频设置为私人。
我正在使用此代码示例:https://developers.google.com/youtube/2.0/developers_guide_php#Updating_Video_Information
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, null, $developerKey);
$playlistVideoFeed = $yt->getPlaylistVideoFeed('http://gdata.youtube.com/feeds/api/playlists/XXXXXX');
function playCount($playlistVideoFeed, $yt) {
$count = 1;
$totalViews = 0;
foreach ($playlistVideoFeed as $videoEntry) {
// ensure the video entry is not private
if(!$videoEntry->isVideoPrivate()) {
// add this episode's play count to the total view count
$totalViews = $totalViews + $videoEntry->getVideoViewCount();
// if views are X and I can edit this video, set it to private
if($totalViews >= 5) {
$vidID = $videoEntry->getVideoId();
$videoEntryToEdit = $yt->getFullVideoEntry($vidID);
if($videoEntryToEdit->getEditLink() !== null) {
$putUrl = $videoEntryToEdit->getEditLink()->getHref();
$videoEntryToEdit->setVideoPublic();
$yt->updateEntry($videoEntryToEdit, $putUrl);
}
}
$count++;
}
}
return $totalViews;
}
* 编辑 **
我的问题的第一部分已经被包括global $yt
解决。以上代码不再返回以下错误:Fatal error: Call to a member function updateEntry() on a non-object
。
现在,剩下的问题: 这不会使视频不公开。使用示例的setVideoDescription
进行测试也不会做任何事情......没有错误,没有任何更改。另外,是的,我超过5个观点:)。
任何想法?
* 编辑V2 **
解决我自己的问题。我更新了上述代码以反映我的解决方案,以防其他人遇到此问题。
呃!我已经把全球$ yt;功能之外。谢谢! 但是,虽然这使得错误消失,但$ yt-> updateEntry不起作用。我用setVideoPrivate和上面的链接的setVideoDescription尝试了它,两者都没有改变。 – Kate 2012-03-16 02:34:01
感谢您的第二部分...我在一些函数中使用$ playlistVideoFeed,所以将外面的部分保留在外面似乎是最简单的方法? – Kate 2012-03-16 02:47:57
@Kate这是一个单独的问题,应作为单独的问题输入。但是'$ videoEntry-> getEditLink()'可能没有返回你期望的结果。 – 2012-03-16 03:06:06