Это работает. Не я изменил поток с избранного на видео, которые были загружены каналом, поэтому вы можете изменить это обратно.
Во-первых, код для функций youtube, я поместил его в отдельный php-файл и импортировал его, просто чтобы привести в порядок вещи.
<?php
class ChannelFeed
{
function __construct( $username )
{
$this->username=$username;
$this->feedUrl=$url='http://gdata.youtube.com/feeds/api/users/'.$username.'/uploads';
$this->feed=simplexml_load_file($url);
}
public function showFullFeed()
{
$vidarray = array();
foreach($this->feed->entry as $video)
{
$vidURL = (string)$video->link['href'];
$vidarray[] = $vidURL;
}
return $vidarray;
}
}
function getYouTubeID($vidURL)
{
$ytvIDlen = 11; // This is the length of YouTube's video IDs
// The ID string starts after "v=", which is usually right after
// "youtube.com/watch?" in the URL
$idStarts = strpos($vidURL, "?v=");
// In case the "v=" is NOT right after the "?" (not likely, but I like to keep my
// bases covered), it will be after an "&":
if($idStarts === FALSE)
$idStarts = strpos($vidURL, "&v=");
// If still FALSE, URL doesn't have a vid ID
if($idStarts === FALSE)
die("YouTube video ID not found. Please double-check your URL.");
// Offset the start location to match the beginning of the ID string
$idStarts +=3;
// Get the ID string and return it
$ytvID = substr($vidURL, $idStarts, $ytvIDlen);
return $ytvID;
}
?>
Следующий код в главном файле, который вызывает его
require_once('youtube_channelfeed.php');
$youtube = new ChannelFeed('username');
$vids = $youtube->showFullFeed();
$vidIDs = array_map("getYouTubeID",$vids);
Получает идентификаторы и сохраняет их в массиве, используя функцию карты массива.
Спасибо за публикацию кода, я искал что-то, чтобы сделать то, что он делает, так что это мне очень помогло.