我一直在努力工作几个小时,我不知道为什么不工作。 我需要使用YouTube API和Zend从VideoID获取详细信息,因此我创建了一个类似这样的函数
function listYoutubeVideo($id) {
$videos = array();
try {
$yt = new Zend_Gdata_YouTube();
$videoFeed = $yt->getVideoEntry($id);
foreach ($videoFeed as $videoEntry) {
$videoThumbnails = $videoEntry->getVideoThumbnails();
$videos[] = array(
'thumbnail' => $videoThumbnails[0]['url'],
'title' => $videoEntry->getVideoTitle(),
'description' => $videoEntry->getVideoDescription(),
'tags' => implode(', ', $videoEntry->getVideoTags()),
'url' => $videoEntry->getVideoWatchPageUrl(),
'flash' => $videoEntry->getFlashPlayerUrl(),
'dura' => $videoEntry->getVideoDuration(),
'id' => $videoEntry->getVideoId()
);
}
} catch (Exception $e) {
}
return $videos;
}
我使用数组和函数执行此操作的原因是因为我想缓存该函数。
我不知道代码有什么问题,我使用完全相同的只是为其他类型的Feed更改getVideoEntry并且它可以工作。
答案 0 :(得分:4)
这是Zend框架中的一个错误:
要快速修复,您可以编辑Zend / Gdata / YouTube / VideoEntry.php
第587行:
// $videoId = substr($fullId, $position + 1);
$url = $this->getFlashPlayerUrl();
$videoId = substr($url, 25, 11);
这不是花哨但是完成了工作。
答案 1 :(得分:3)
我复制了你的代码并运行它。现在getVideoEntry似乎正在返回单个视频的数据,但出于某种原因,你希望它是一个集合?此外,如果您缓存,您可能想要为空数据返回创建一些检查。
以下是一些适用于我的修改后的代码:
function listYoutubeVideo($id) {
$video = array();
try {
$yt = new Zend_Gdata_YouTube();
$videoEntry = $yt->getVideoEntry($id);
$videoThumbnails = $videoEntry->getVideoThumbnails();
$video = array(
'thumbnail' => $videoThumbnails[0]['url'],
'title' => $videoEntry->getVideoTitle(),
'description' => $videoEntry->getVideoDescription(),
'tags' => implode(', ', $videoEntry->getVideoTags()),
'url' => $videoEntry->getVideoWatchPageUrl(),
'flash' => $videoEntry->getFlashPlayerUrl(),
'dura' => $videoEntry->getVideoDuration(),
'id' => $videoEntry->getVideoId()
);
} catch (Exception $e) {
/*
echo $e->getMessage();
exit();
*/
}
return $video;
}