From: Alan J. Pippin <ajp@server.pippins.net>
Date: Fri, 18 Apr 2008 03:46:59 +0000 (-0600)
Subject: Added support for new youtube API: GDATA. Deprecated youtubeDevId
X-Git-Tag: 1_1_1~4
X-Git-Url: http://git.pippins.net/%27%20.%20%24this-%3Ephpgw_js_url%20.%20%27/jscalendar/%7Bview%7D?a=commitdiff_plain;h=bbe9d512174553b9b410742bb82c69ffa67911f5;p=embedvideo%2F.git

Added support for new youtube API: GDATA. Deprecated youtubeDevId
---

diff --git a/ItemAddEmbedVideo.inc b/ItemAddEmbedVideo.inc
index 0e277a4..ac7b1cf 100644
--- a/ItemAddEmbedVideo.inc
+++ b/ItemAddEmbedVideo.inc
@@ -67,7 +67,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	   }
 	   
 	   /* 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;
@@ -78,7 +78,6 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	    */
 	   $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");
@@ -99,7 +98,6 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	     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";
@@ -120,7 +118,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	  
 	   /* 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";
@@ -201,148 +199,94 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 		   $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("/&quot;/","'",$description);
-		   $description=preg_replace("/&lt;/","<",$description);
-		   $description=preg_replace("/&gt;/",">",$description);
-		   $description=preg_replace("/&amp;/","&",$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("/&#60;/","<",$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("/&#60;/","<",$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
diff --git a/templates/EmbedVideoSiteAdmin.tpl b/templates/EmbedVideoSiteAdmin.tpl
index 6dc7f8c..f45ba5d 100644
--- a/templates/EmbedVideoSiteAdmin.tpl
+++ b/templates/EmbedVideoSiteAdmin.tpl
@@ -121,9 +121,6 @@
     <tr class="gbEven"><td>externalFlvPlayerVars</td><td>flashvars= options for external flash player</td>
       <td>{g->text text="provides the module with the flashvars to use for the external flash player"}</td></tr>
 
-    <tr class="gbOdd"><td>youtubeDevId</td><td>xxxxxxxxxxx</td>
-      <td>{g->text text="specify the youtube Developer ID used when this plugin makes API calls to youtube"}</td></tr>
-
     <tr class="gbEven"><td>youtubeShowRelated</td><td>true/false</td>
       <td>{g->text text="specify whether you want to show the related video links in the youtube embedded player"}</td></tr>