刚开始深入了解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);
有什么想法吗?
答案 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
$state = $youtubeEntry->getVideoState();
如果state为null,那么你的视频可用,否则make of state就是这样的字符串。
(string) $state->getName();
大约有4个重要的州名。 (处理,拒绝,失败,限制)