API YouTube getPlaylistVideoFeedUrl выдает - PullRequest
0 голосов
/ 01 ноября 2011

Я хотел бы добавить видео в плейлист с помощью GData. Поэтому у меня нет проблем с созданием плейлиста, но я не могу добавить в него видео. Вот что я делаю:

$playlist = $yt->newPlaylistListEntry();
$playlist->summary = $yt->newDescription()->setText("test");
$playlist->title = $yt->newTitle()->setText("test2");

$postLocation = 'http://gdata.youtube.com/feeds/api/users/default/playlists';

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

$feedUrl = $playlist->getPlaylistVideoFeedUrl();

$videoEntryToAdd = $yt->getVideoEntry(..given id here..);
$newPlaylistListEntry = $yt->newPlaylistListEntry($videoEntryToAdd->getDOM());
$yt->insertEntry($newPlaylistListEntry, $feedUrl);

И я получаю следующую ошибку:

Примечание. Попытка получить свойство необъекта в C: ... \ library \ Zend \ Gdata \ YouTube \ PlaylistListEntry.php в строке 296

Что вызвано этим кодом:

$feedUrl = $playlist->getPlaylistVideoFeedUrl();

var_dump показывает, что $feed_url равно NULL . И это показывает, что $playlist является объектом Zend_Gdata_YouTube_PlaylistListEntry, поэтому я не могу понять, почему он пишет «свойство необъекта».

1 Ответ

0 голосов
/ 25 декабря 2011

Кажется, что это какая-то ошибка в API. Так что я сделал небольшой обходной путь. Это может показаться некрасивым, но у меня не было других идей.

function grab_dump($var)
{
    ob_start();
    var_dump($var);
    return ob_get_clean();
}

function getPlayListLink($playlist) {
    $test = grab_dump($playlist);
    $test = strstr($test, "http://gdata.youtube.com/feeds/api/playlists/");
    return strstr($test, "' countHint='0'", TRUE);
}

function addVideosToPlaylist($videos_arr, $playlistEntry, $yt) {
    $feedUrl = getPlayListLink($playlistEntry); 

    foreach($videos_arr as $video)
    {
        $videoEntryToAdd = $yt->getVideoEntry($video);
        $newPlaylistListEntry = $yt->newPlaylistListEntry($videoEntryToAdd->getDOM());
        $yt->insertEntry($newPlaylistListEntry, $feedUrl);
    }
}

И просто назовите это так:

addVideosToPlaylist($vids_id, $playlist, $yt);
...