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でも)動く。