【问题标题】:Zend Gdata How to retrieve youtube playlist videos & exclude deleted and private from playlistZend Gdata 如何检索 youtube 播放列表视频并从播放列表中排除已删除和私有
【发布时间】:2012-08-17 09:37:51
【问题描述】:

我使用 Zend_Gdata_YouTube();从频道中检索播放列表,但其中一些包含已删除或私人视频。当我将提要传递给

 new Zend_Paginator(new Lib_Paginator_Adapter_YoutubePlaylist($playlistData[$playlistParam]['feedUrl']));

它还计算已删除视频和私人视频,这就是出现包含 0 个元素的页面的原因。如何按隐私/存在创建查询或过滤结果?

$paginator = new Zend_Paginator(new Lib_Paginator_Adapter_YoutubePlaylist($playlistData[$playlistParam]['feedUrl']));
$videos = $yt->getPlaylistVideoFeed($playlistData[$playlistParam]['feedUrl']);

谢谢。

更新:

$username = $this->config->youtube->username;
        $yt = new Zend_Gdata_YouTube();
        $yt->setMajorProtocolVersion(2);

    $playlistData = array();
    $playlistData['uploads'] = array(
        'title' => 'Uploads'
    );
    $playlists = $yt->getPlaylistListFeed($username);
    foreach ($playlists as $playlist) {
        $playlistId = $this->getPlaylistId($playlist->id);
        $playlistData[$playlistId] = array(
            'title' => $playlist->title->text,
            'feedUrl' => $playlist->getPlaylistVideoFeedUrl()
        );
    }

    $playlistParam = $this->getRequest()->getParam('playlist');
    if (!$playlistParam) {
        $playlistParam = 'uploads';
    }

    if ($playlistParam != 'uploads') {
        $paginator = new Zend_Paginator(new Lib_Paginator_Adapter_YoutubePlaylist($playlistData[$playlistParam]['feedUrl']));
        $videos = $yt->getPlaylistVideoFeed($playlistData[$playlistParam]['feedUrl']);
    } else {
        $paginator = new Zend_Paginator(new Lib_Paginator_Adapter_YoutubeUser($username));
        $videos = $yt->getUserUploads($username);
    }

    $data = array();
    foreach ($videos as $video) {
        $thumbnails = $video->getVideoThumbnails();
        $data[] = array(
            'id' => $this->getVideoId($video->getVideoWatchPageUrl()),
            'thumb' => $thumbnails[0]['url'],
            'title' => $video->getVideoTitle(),
            'published' => $video->getPublished()->getText(),
            'description' => $video->getVideoDescription()
        );
        break;
    }

【问题讨论】:

    标签: php zend-framework youtube youtube-api


    【解决方案1】:

    您希望根据yt:state 的存在进行查询,如果状态标记存在,则文件由于某种原因受到限制。您还可以在ZF gData 和查看Zend_Gdata_YouTube_Extension_State 中的代码找到一些有用的信息。您没有包含足够多的代码,我无法就如何调整您的代码提供更多建议。

    祝你好运! [编辑] 最好的猜测是添加一个 videoQuery 代替 getPlaylistFeed() 或作为 getPlaylistFeed() 的一部分:

    $query = new Zend_Gdata_YouTube_VideoQuery();
    $query->setParam('state', 0);//you may need to query for all of your videos this way.
    

    抱歉,我帮不上忙,但这个 api 看起来像一团乱七八糟的东西。

    【讨论】:

    • 对我来说仍然不清楚,因为它看起来像视频数是 5(播放列表有 7 个(1 个已删除和 1 个私有),但分页器认为视频数是 7。我已经更新了问题一些额外的代码。
    • 没关系,我也不清楚。我不确定您是否可以构建视频查询并排除 yt:state 是否已设置,或者您是否必须在分页器中排除这些视频。对不起。
    猜你喜欢
    • 2018-06-24
    • 2014-02-07
    • 1970-01-01
    • 2012-12-11
    • 2016-06-15
    • 2017-06-25
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多