3

目前我正在构建一个使用少量用户上传视频的网站。这些视频被上传到服务器,然后通过 API v3 移动到 YouTube。设置私有标签,所有视频都上传到一个中央帐户。

我的问题是;如何通过 API 访问和列出所有这些私人视频以显示在我的网站上?我不确定这是否可能。任何反馈将不胜感激。

在仔细研究之后,我发现了这个。在浏览了文档后,我找不到一个 PHP 特定的例子来说明我如何做到这一点:getuserUploads。

4

2 回答 2

3

我相信您可以通过以下方式使用 YouTube Data v3 做到这一点:

以这种方式获取上传的视频(是Java示例):

https://developers.google.com/youtube/v3/docs/playlistItems/list#examples

然后您可以使用以下方法检索这些播放列表项的视频资源:

https://developers.google.com/youtube/v3/docs/videos/list

然后您可以验证每个视频资源中的 status.privacyStatus(如果您上传的视频具有不同的 status.privacyStatus ..)

于 2013-01-31T01:58:56.460 回答
3
  1. 获取 ZF Gdata 库@http: //framework.zend.com/downloads/latest

  2. 运行自动加载器:

    set_include_path(APPPATH . 'third_party/zf/' . get_include_path());
    require 'Zend/Loader/Autoloader.php';
    Zend_Loader_Autoloader::getInstance();
    
  3. 使用您的 youtube 登录名、密码和开发人员密钥创建一个 HTTP 实例(您必须获取一个)。

       $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                "Youtube LOGIN", 
                "Youtube PASSWORD", 
                'youtube'
        );
    
  4. 使用您的证书实例化 GData

        $yt = new Zend_Gdata_YouTube(
                $httpClient, 
                null,
                null, 
                "Youtube Developer Key"
        );
    
  5. 获取您的播放列表

        $playlistListFeed = $yt->getPlaylistListFeed("YOUR YOUTUBE CHANNEL NAME");
        //print_r($playlistListFeed); // uncomment to see the goods
    
  6. 准备一个数组以对更少的数据进行排序

        $data['feed'] = array();
    
  7. 遍历所有内容,使用is_private来判断它是否是私有的

        foreach ($playlistListFeed as $playlistEntry) 
        {
          $feedUrl = $playlistEntry->getPlaylistVideoFeedUrl();
          $playlistVideoFeed = $yt->getPlaylistVideoFeed($feedUrl);
    
          foreach ($playlistVideoFeed as $video) {
    
            $data['feed'][] = array(
                'id' => $video->getVideoId(),
                'title' => $video->getTitle(),
                'thumbnail' => $video->getVideoThumbnails(),
                'is_private' => $video->isVideoPrivate(),
                'url' => $video->getVideoWatchPageUrl(),
                'flash_url' => $video->getFlashPlayerUrl ()
            );
        }
    
    } 
    

您可能需要对其进行修改以使其适合您的设置,希望这会有所帮助。

于 2013-01-30T19:36:31.180 回答