2011-11-01 67 views
0

我想使用GData將視頻添加到播放列表。所以我在創建播放列表時沒有任何問題,但我無法爲其添加視頻。 這是我做的:YouTube API getPlaylistVideoFeedUrl問題

$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); 

而且我得到以下錯誤:

Notice: Trying to get property of non-object in C:...\library\Zend\Gdata\YouTube\PlaylistListEntry.php on line 296

它是此代碼導致的:

$feedUrl = $playlist->getPlaylistVideoFeedUrl(); 

var_dump表明$feed_urlNULL 。它顯示$playlist是一個對象Zend_Gdata_YouTube_PlaylistListEntry,所以我不明白爲什麼它寫道「非對象的屬性」。

回答

0

它似乎是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);