}
/* Store any Parameters into some simpler, shorter, local variables */
- global $debugOutput, $useInternalFlvPlayer, $youtubeDevId;
+ global $debugOutput, $useInternalFlvPlayer;
global $width, $height, $externalFlvPlayer, $externalFlvPlayerVars;
global $flvThumbnail, $useRemoteSize, $autoStart;
global $watermarkVideos, $watermarkImage, $watermarkAlignment;
*/
$debugOutput = $this->getParameter($ItemAddEmbedVideo, 'debugOutput', "false");
$useInternalFlvPlayer = $this->getParameter($ItemAddEmbedVideo, 'useInternalFlvPlayer', "true");
- $youtubeDevId = $this->getParameter($ItemAddEmbedVideo, 'youtubeDevId', "");
$youtubeShowRelated = $this->getParameter($ItemAddEmbedVideo, 'youtubeShowRelated', "false");
$width = $this->getParameter($ItemAddEmbedVideo, 'width', "320");
$height = $this->getParameter($ItemAddEmbedVideo, 'height', "240");
print "<h2>Variable Parameters</h2>\n";
print "debugOutput=$debugOutput<br>\n";
print "useInternalFlvPlayer=$useInternalFlvPlayer<br>\n";
- print "youtubeDevId=$youtubeDevId<br>\n";
print "youtubeShowRelated=$youtubeShowRelated<br>\n";
print "width=$width<br>\n";
print "height=$height<br>\n";
/* youtube */
$youtubeUrlPattern="youtube.com";
- $youtubeApiUrl="http://www.youtube.com/api2_rest";
+ $youtubeApiUrl="http://gdata.youtube.com/feeds/api/";
$youtubeThumbnailUrl="http://img.youtube.com/vi/";
/* We can't extract the server size from youtube */
$youtubeWidth="425";
$extra_params="&ap=%2526fmt%3D".$matches[1];
}
}
-
+
+ /* Youtube api feed */
+ $feed = $youtubeApiUrl."videos/$video_id";
+
if(!strcmp($debugOutput,"true")) {
- print "<h2>URL Parsing Results</h2>";
+ print "\n<h2>Youtube URL Parsing Results</h2>";
print "video_id: $video_id<br>";
print "extra_embed_params: $extra_params<br>";
+ print "gdata feed: $feed<br>";
print "<hr>";
}
-
- /* If we have a valid youtube developer id, use that to get information about the video */
- /* Otherwise, just parse it directly from the HTML page */
- $dev_id = $youtubeDevId;
- if(!preg_match("/\w+/",$dev_id)) {
- /* No developer ID found. Proceed with direct page parsing. */
-
- /* Grab the contents of the webpage used to display the video on video.google.com */
- list ($successfullyCopied, $contents, $response, $headers) =
- GalleryCoreApi::fetchWebPage($url, $extraHeaders);
- if (!$successfullyCopied) {
- return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
- "Unable to get video information at url: $url - $response"),NULL,NULL);
- }
-
- /* Extract the summary from the webpage contents */
- preg_match('/<meta name="description" content="(.+?)">/i', $contents, $matches);
- $summary=$matches[1];
-
- /* Extract the title from the webpage contents */
- preg_match('/<meta name="title" content="(.+?)">/i', $contents, $matches);
- $title=$matches[1];
- /* Extract the thumbnail URL from the webpage contents */
- $thumbnail=$youtubeThumbnailUrl.$video_id."/default.jpg";
-
- /* Determine if the video should autoplay or not based on the autoStart parameter */
- $autoStartStr="";
- if(!strcmp($autoStart,"true")) {
- $autoStartStr="&autoplay=1";
- } else {
- $autoStartStr="&autoplay=0";
- }
-
- /* Determine if the video should show related videos or not based on the youtubeShowRelated parameter */
- $youtubeShowRelatedStr="";
- if(!strcmp($youtubeShowRelated,"false")) {
- $youtubeShowRelatedStr="&rel=0";
- } else {
- $youtubeShowRelatedStr="&rel=1";
- }
-
- /* Format the description to hold a reference to the embedded video */
- if(preg_match('/id=\"embed_code\".+?value=\'(.+?)\'/', $contents, $matches)) {
- $description=$matches[1];
- $description=preg_replace("/"/","'",$description);
- $description=preg_replace("/</","<",$description);
- $description=preg_replace("/>/",">",$description);
- $description=preg_replace("/&/","&",$description);
- $description=preg_replace("/$video_id/",$video_id.$autoStartStr.$youtubeShowRelatedStr,$description);
- $description=preg_replace("/$video_id/",$video_id.$extra_params,$description);
- if(!strcmp($useRemoteSize,"false")) {
- $description=preg_replace("/width='\d+'/","width='".$width."'",$description);
- $description=preg_replace("/height='\d+'/","height='".$height."'",$description);
- }
- } else {
- return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
- "Unable to extract embedded video information from url: $url"),NULL,NULL);
- }
-
- } else {
- /* We found a valid developer ID. Proceed with API calls. */
-
- /* Youtube api feed */
- $feed = $youtubeApiUrl.'?method=youtube.videos.get_details';
- $feed.= "&dev_id=$dev_id&video_id=$video_id";
-
- /* Get the youtube xml feed as a string data source */
- list ($successfullyCopied, $xml, $response, $headers) =
- GalleryCoreApi::fetchWebPage($feed, $extraHeaders);
- if (!$successfullyCopied) {
- return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
- "Unable to get video information at url: $url - $response"),null,null);
- }
-
- if(preg_match("/This video is private/",$xml)) {
- return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER,__FILE__,__LINE__,
- "Unable to retrieve video information from youtube.".
- "You cannot embed a private youtube video: $url"),null,null);
- }
+ /* Get the youtube xml feed as a string data source */
+ list ($successfullyCopied, $xml, $response, $headers) =
+ GalleryCoreApi::fetchWebPage($feed, $extraHeaders);
+ if (!$successfullyCopied) {
+ return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+ "Unable to get video information at url: $url - $response"),null,null);
+ }
- if(!strcmp($debugOutput,"true")) {
- print "\n<h2>Youtube XML Dump</h2>";
- print "$xml";
- print "<hr>";
- }
+ if(preg_match("/This video is private/",$xml)) {
+ return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER,__FILE__,__LINE__,
+ "Unable to retrieve video information from youtube.".
+ "You cannot embed a private youtube video: $url"),null,null);
+ }
- /* Extract certain information from the xml feed */
- preg_match_all("/\<title\>(.+?)\<\/title\>/smi",$xml, $title);
- preg_match_all("/\<description\>(.+?)\<\/description\>/smi",$xml, $description);
- preg_match_all("/\<thumbnail_url\>(.+?)\<\/thumbnail_url\>/smi",$xml, $thumbnail);
+ if(!strcmp($debugOutput,"true")) {
+ print "\n<h2>Youtube XML Dump</h2>";
+ print "$xml";
+ print "<hr>";
+ }
- array_shift($title);
- array_shift($thumbnail);
- array_shift($description);
+ /* Extract certain information from the xml feed */
+ preg_match_all("/\<media:title.+?\>(.+?)\<\/media:title\>/smi",$xml, $title);
+ preg_match_all("/\<media:description.+?\>(.+?)\<\/media:description\>/smi",$xml, $description);
+ preg_match_all("/\<media:thumbnail url='(.+?)'/smi",$xml, $thumbnail);
- /* Replace html characters. More can be added but this seems to work */
- for($i=0;$i<count($description[0]);$i++){
- $description[0][$i] = preg_replace("/</","<",$description[0][$i]);
- $description[0][$i] = html_entity_decode($description[0][$i],ENT_QUOTES);
- }
+ array_shift($title);
+ array_shift($thumbnail);
+ array_shift($description);
+
+ /* Replace html characters. More can be added but this seems to work */
+ for($i=0;$i<count($description[0]);$i++){
+ $description[0][$i] = preg_replace("/</","<",$description[0][$i]);
+ $description[0][$i] = html_entity_decode($description[0][$i],ENT_QUOTES);
+ }
- /* Store the information found in some local variables */
- $title = $title[0][0];
- $summary = $description[0][0];
- $thumbnail = $thumbnail[0][0];
+ /* Store the information found in some local variables */
+ $title = $title[0][0];
+ $summary = $description[0][0];
- /* Determine what our width and height should be based on our useRemoteSize parameter */
- if(!strcmp($useRemoteSize,"true")) {
- $width = $youtubeWidth;
- $height = $youtubeHeight;
- }
+ /* The last thumbnail match we make will always be the highest resolution */
+ $thumbnail = $thumbnail[0][sizeof($thumbnail[0])-1];
+
+ if(!strcmp($debugOutput,"true")) {
+ print "title: $title<br>";
+ print "summary: $summary<br>";
+ print "thumbnail: $thumbnail<br>";
+ }
- /* Determine if the video should autoplay or not based on the autoStart parameter */
- $autoStartStr="";
- if(!strcmp($autoStart,"true")) {
- $autoStartStr="&autoplay=1";
- }
+ /* Determine what our width and height should be based on our useRemoteSize parameter */
+ if(!strcmp($useRemoteSize,"true")) {
+ $width = $youtubeWidth;
+ $height = $youtubeHeight;
+ }
- /* Determine if the video should show related videos or not based on the youtubeShowRelated parameter */
- $youtubeShowRelatedStr="";
- if(!strcmp($youtubeShowRelated,"false")) {
- $youtubeShowRelatedStr="&rel=0";
- }
+ /* Determine if the video should autoplay or not based on the autoStart parameter */
+ $autoStartStr="";
+ if(!strcmp($autoStart,"true")) {
+ $autoStartStr="&autoplay=1";
+ }
- /* Format the description to hold a reference to the embedded video */
- $description = '<object width="'.$width.'" height="'.$height.'">';
- $description.= '<param name="movie" ';
- $description.= 'value="http://www.youtube.com/v/'.$video_id.$extra_params.'"></param>';
- $description.= '<param name="wmode" value="transparent"></param>';
- $description.= '<embed src="http://www.youtube.com/v/';
- $description.= $video_id.$extra_params.$autoStartStr.$youtubeShowRelatedStr;
- $description.= '" type="application/x-shockwave-flash" wmode="transparent" ';
- $description.= 'width="'.$width.'" height="'.$height.'"></embed></object>';
+ /* Determine if the video should show related videos or not based on the youtubeShowRelated parameter */
+ $youtubeShowRelatedStr="";
+ if(!strcmp($youtubeShowRelated,"false")) {
+ $youtubeShowRelatedStr="&rel=0";
}
+
+ /* Format the description to hold a reference to the embedded video */
+ $description = '<object width="'.$width.'" height="'.$height.'">';
+ $description.= '<param name="movie" ';
+ $description.= 'value="http://www.youtube.com/v/'.$video_id.$extra_params.'"></param>';
+ $description.= '<param name="wmode" value="transparent"></param>';
+ $description.= '<embed src="http://www.youtube.com/v/';
+ $description.= $video_id.$extra_params.$autoStartStr.$youtubeShowRelatedStr;
+ $description.= '" type="application/x-shockwave-flash" wmode="transparent" ';
+ $description.= 'width="'.$width.'" height="'.$height.'"></embed></object>';
+
/*
**********************************
* Embed a Google Video