YouTube PHP API - 获取以前上传的视频的状态?

时间:2011-09-26 11:38:21

标签: php youtube youtube-api

刚开始深入了解YouTube PHP API并使基于浏览器的Zend上传脚本正常运行。但是,我找不到任何关于如何在上传视频后检索视频状态的文档。我需要这个的主要原因是错误处理 - 我需要能够知道视频是否被YouTube批准,因为有人可能在技术上上传图像或文件太大。我需要知道vid已被批准,以便我知道最终用户返回网站时显示的消息(即“您的视频是直播”或“视频上传失败”)。

即使格式或大小不正确,基于YouTube PHP浏览器的上传也会返回200的网址参数状态,这当然没有用。关于如何从YT对象获取此信息的任何想法?

总而言之,当用户返回网站时,我希望能够根据他们的特定视频ID创建YT对象,并希望能够确认它没有被拒绝。我正在使用ClientLogin发起YouTube对象:

$authenticationURL= 'https://www.google.com/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
              $username = 'myuser@gmail.com',
              $password = 'mypassword',
              $service = 'youtube',
              $client = null,
              $source = 'MySource', // a short string identifying your application
              $loginToken = null,
              $loginCaptcha = null,
              $authenticationURL);

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

哇,最后几天找到答案并拼凑代码后,终于找到了答案。创建$yt对象后,使用以下命令检查状态:

$yt->setMajorProtocolVersion(2);
$youtubeEntry = $yt->getVideoEntry('YOUR_YOUTUBE_VID_ID', null, true);

if ($youtubeEntry->getControl()){
    $control = $youtubeEntry->getControl();
    $state = $control->getState()->getName();
}

如果视频因任何原因未获批准,则回显$state会显示字符串'failed'。否则它是空的,这意味着它被批准并且很好去(猜测其他州名将是:处理,拒绝,失败,限制,如上面提到的Mient-jan Stelling)。

疯狂这个答案是多么难以为首次使用的YouTube API提供者。解决了! (Pats self on back)

答案 1 :(得分:1)

如果是这样,你有一个CallToken吗?

对于此示例,我将Zend_Gdata_Youtube与Zend AuthSub一起使用。

上传视频时,您有一个CallToken,使用此调用令牌可以访问视频的状态。

$authenticationURL= 'https://www.google.com/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
          $username = 'myuser@gmail.com',
          $password = 'mypassword',
          $service = 'youtube',
          $client = null,
          $source = 'MySource', // a short string identifying your application
          $loginToken = null,
          $loginCaptcha = null,
          $authenticationURL);

$youtube = new Zend_Gdata_YouTube( $httpClient, '', NULL, YOUTUBE_DEVELOPER_KEY );

$youtubeEntry = $youtube->getFullVideoEntry( 'ID_OF_YOUTUBE_MOVIE' ); 
// its the 11 digit id all youtube video's have

在$ youtubeEntry中显示有关该视频的所有数据

$state = $youtubeEntry->getVideoState();

如果state为null,那么你的视频可用,否则make of state就是这样的字符串。

(string) $state->getName();

大约有4个重要的州名。 (处理,拒绝,失败,限制)