uzullaがブログ

uzullaがブログです。

Zend_Gdata_YouTubeで、PrivateなビデオをPublicにしようとしたらなんかうまく行かない話し

Zend_Gdata_YouTubeをつかって、Youtubeの動画の情報を操作するとき、サンプルを斜め読みしながら書くと、以下みたいなコードになりますよね

Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_YouTube_VideoEntry');

$httpClient = Zend_Gdata_ClientLogin::getHttpClient($userId, $pass, 'youtube', null, 'MySource');
$httpClient->setHeaders('X-GData-Key', "key={$myDeveloperKey}");
$yt = new Zend_Gdata_YouTube($httpClient);

$myVideoEntry = $yt->getVideoEntry($video_id);

$myVideoEntry->setVideoPublic();  // 公開
//$myVideoEntry->setVideoPrivate();  // 非公開

$putUrl = $myVideoEntry->getEditLink()->getHref();
$newEntry = $yt->updateEntry($myVideoEntry, $putUrl);

でもね、なぜか$myVideoEntry->getEditLink()->getHref();が空になっちゃって、URLが生成されないんですよ。なんなの。


答え

$myVideoEntry = $yt->getVideoEntry($video_id, null, true);

こう書け。


こう書いておけばいずれにせよ(Public>Privateでも)動く。