Идентификатор плейлиста api Youtube - PullRequest
3 голосов
/ 20 февраля 2012

Я использую найденный тестовый код @ http://code.google.com/apis/youtube/2.0/developers_guide_php.html для создания списка воспроизведения:

$newPlaylist = $yt->newPlaylistListEntry();
$newPlaylist->summary = $yt->newDescription()->setText($desc);
$newPlaylist->title = $yt->newTitle()->setText($title);
// post the new playlist
$postLocation = 'http://gdata.youtube.com/feeds/api/users/default/playlists';
try {
  $playlist = $yt->insertEntry($newPlaylist, $postLocation);
  } 
catch (Zend_Gdata_App_Exception $e) {
  echo $e->getMessage();
}

Плейлист создан, но как я могу получить идентификатор или URL только что созданного плейлиста?

Ответы [ 3 ]

2 голосов
/ 23 августа 2012

У меня такая же проблема.Мне удалось продвинуться немного дальше, но я все еще не могу получить playlistID.Вот что я сделал:

вместо:

$playlist = $yt->insertEntry($newPlaylist, $postLocation);

Я использовал:

$playlist = $yt->insertEntry($newPlaylist, $postLocation, 'Zend_Gdata_YouTube_PlaylistListEntry');

Но когда я пытаюсь получить идентификатор по $playlist->getPlaylistID() или $playlist->playlistId->text Я получаю то же исключение, которое говорит:

Элемент yt: playlistId не поддерживается в версиях, предшествующих 2.

, даже если я установил его ранее с$yt->setMajorProtocolVersion(2);

0 голосов
/ 31 марта 2013

Вам не нужны специальные хаки, чтобы сделать эту работу. Вам просто нужно явно указать версию протокола для переменной $ playlist вместе с переменной $ yt. Как вы сказали, установите основную версию протокола для $ yt ранее:

$yt->setMajorProtocolVersion(2);

Затем, после инициализации $ playlist, установите для этого протокол:

$playlist = $yt->insertEntry($newPlaylist, $postLocation, 'Zend_Gdata_YouTube_PlaylistListEntry');
$playlist->setMajorProtocolVersion(2);

Как только вы это сделаете, вы сможете без проблем получить идентификатор плейлиста:)

$playlist_id = $playlist->getPlaylistID();
0 голосов
/ 25 августа 2012

Это полный и полный взлом, у меня была точно такая же проблема, поэтому я пошел в класс по Zend / Gdata / YouTube / PlaylistListEntry.php в строке 229 и прокомментировал оператор if else.

 /**
 * Returns the Id relating to the playlist.
 *
 * @throws Zend_Gdata_App_VersionException
 * @return Zend_Gdata_YouTube_Extension_PlaylistId  The id of this playlist.
 */
public function getPlaylistId()
{
    /*if (($this->getMajorProtocolVersion() == null) ||
        ($this->getMajorProtocolVersion() == 1)) {
        require_once 'Zend/Gdata/App/VersionException.php';
        throw new Zend_Gdata_App_VersionException('The yt:playlistId ' .
            'element is not supported in versions earlier than 2.');
    } else {*/
        return $this->_playlistId;
    //}
}

Я ЛЮБЛЮ, чтобы кто-то показал нам, как исправить это правильно, но это сделало это так

function printPlaylistListEntry($playlistListEntry, $showPlaylistContents = false)
    {

      $this->yt->setMajorProtocolVersion(2);
      echo '<br>Title: ' . $playlistListEntry->title->text . "\n";
      echo '<br>Description: ' . $playlistListEntry->description->text . "\n";
      echo '<br>playlistId: ' . $playlistListEntry->playlistId->text . "\n";

... (из youtube v2 php api).

вернет плейлист.

Название: therighttitle

Описание: Правильное описание

идентификатор списка воспроизведения: therightplaylistId

edit: я думаю, что это может быть лучшим решением:

if ($this->getMajorProtocolVersion() < 2) {
        require_once 'Zend/Gdata/App/VersionException.php';
        throw new Zend_Gdata_App_VersionException('The yt:playlistId ' .
            'element is not supported in versions earlier than 2.');
    } else {

        return $this->_playlistId;
    }

замените функцию getPlaylistId () на это, следуя логике предыдущей функции getDescription и сделав ее менее хакерской. Опять же, полностью открыт для критики о том, почему это или не является хорошей идеей от зендеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...