= 5.1.4
*
* This sample is run from within a web browser. These files are required:
* index.php - the main logic, which interfaces with the YouTube API
* interface.html - the HTML to represent the web UI
* web_browser.css - the CSS to define the interface style
* web_browser.js - the JavaScript used to provide the video list AJAX interface
*
* NOTE: If using in production, some additional precautions with regards
* to filtering the input data should be used. This code is designed only
* for demonstration purposes.
*/
/**
* @see Zend_Loader
*/
require_once 'Zend/Loader.php';
/**
* @see Zend_Gdata_YouTube
*/
Zend_Loader::loadClass('Zend_Gdata_YouTube');
/**
* Finds the URL for the flash representation of the specified video
*
* @param Zend_Gdata_YouTube_VideoEntry $entry The video entry
* @return string|null The URL or null, if the URL is not found
*/
function findFlashUrl($entry)
{
foreach ($entry->mediaGroup->content as $content) {
if ($content->type === 'application/x-shockwave-flash') {
return $content->url;
}
}
return null;
}
/**
* Returns a feed of top rated videos for the specified user
*
* @param string $user The username
* @return Zend_Gdata_YouTube_VideoFeed The feed of top rated videos
*/
function getTopRatedVideosByUser($user)
{
$userVideosUrl = 'http://gdata.youtube.com/feeds/users/' .
$user . '/uploads';
$yt = new Zend_Gdata_YouTube();
$ytQuery = $yt->newVideoQuery($userVideosUrl);
// order by the rating of the videos
$ytQuery->setOrderBy('rating');
// retrieve a maximum of 5 videos
$ytQuery->setMaxResults(5);
// retrieve only embeddable videos
$ytQuery->setFormat(5);
return $yt->getVideoFeed($ytQuery);
}
/**
* Returns a feed of videos related to the specified video
*
* @param string $videoId The video
* @return Zend_Gdata_YouTube_VideoFeed The feed of related videos
*/
function getRelatedVideos($videoId)
{
$yt = new Zend_Gdata_YouTube();
$ytQuery = $yt->newVideoQuery();
// show videos related to the specified video
$ytQuery->setFeedType('related', $videoId);
// order videos by rating
$ytQuery->setOrderBy('rating');
// retrieve a maximum of 5 videos
$ytQuery->setMaxResults(5);
// retrieve only embeddable videos
$ytQuery->setFormat(5);
return $yt->getVideoFeed($ytQuery);
}
/**
* Echo img tags for the first thumbnail representing each video in the
* specified video feed. Upon clicking the thumbnails, the video should
* be presented.
*
* @param Zend_Gdata_YouTube_VideoFeed $feed The video feed
* @return void
*/
function echoThumbnails($feed)
{
foreach ($feed as $entry) {
$videoId = $entry->getVideoId();
echo '';
}
}
/**
* Echo the video embed code, related videos and videos owned by the same user
* as the specified videoId.
*
* @param string $videoId The video
* @return void
*/
function echoVideoPlayer($videoId)
{
$yt = new Zend_Gdata_YouTube();
$entry = $yt->getVideoEntry($videoId);
$videoTitle = $entry->mediaGroup->title;
$videoUrl = findFlashUrl($entry);
$relatedVideoFeed = getRelatedVideos($entry->getVideoId());
$topRatedFeed = getTopRatedVideosByUser($entry->author[0]->name);
print <<$videoTitle
END;
echo ' ';
echoVideoMetadata($entry);
echo ' Related: ';
echoThumbnails($relatedVideoFeed);
echo ' Top rated videos by user: ';
echoThumbnails($topRatedFeed);
}
/**
* Echo video metadata
*
* @param Zend_Gdata_YouTube_VideoEntry $entry The video entry
* @return void
*/
function echoVideoMetadata($entry)
{
$title = $entry->mediaGroup->title;
$description = $entry->mediaGroup->description;
$authorUsername = $entry->author[0]->name;
$authorUrl = 'http://www.youtube.com/profile?user=' . $authorUsername;
$tags = $entry->mediaGroup->keywords;
$duration = $entry->mediaGroup->duration->seconds;
$watchPage = $entry->mediaGroup->player[0]->url;
$viewCount = $entry->statistics->viewCount;
$rating = $entry->rating->average;
$numRaters = $entry->rating->numRaters;
$flashUrl = findFlashUrl($entry);
print <<Title: ${title} Description: ${description} Author:${authorUsername} Tags: ${tags} Duration: ${duration} seconds View count: ${viewCount} Rating: ${rating} (${numRaters} ratings) Flash:${flashUrl} Watch page:${watchPage}
END;
}
/**
* Echo the list of videos in the specified feed.
*
* @param Zend_Gdata_YouTube_VideoFeed $feed The video feed
* @return void
*/
function echoVideoList($feed)
{
echo '