Added support to handle &fmt=18 type options to youtube video urls
authorAlan J. Pippin <ajp@server.pippins.net>
Fri, 18 Apr 2008 02:05:53 +0000 (20:05 -0600)
committerAlan J. Pippin <ajp@pippins.net>
Fri, 18 Apr 2008 02:05:53 +0000 (20:05 -0600)
ItemAddEmbedVideo.inc

index ac3f12ad3d83091c4ea61e318440e957614ef3e7..6bb160fbc5b7ebaff3e94f00b1d1b6e0ece01a08 100644 (file)
@@ -178,14 +178,33 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
            *****************************
            */
           if(preg_match("/$youtubeUrlPattern/",$url)) {
-
+            
               /* Make sure we can find a video_id in the URL */
-              if(preg_match("/watch\?v=(.*)/",$url,$matches)) {
+              $extra_params = "";
+              if(preg_match("/watch\?v=(.*?)(&\S+=\S+)/",$url,$matches)) {
+                  $video_id = $matches[1];
+                  $extra_params = $matches[2];
+              } else if (preg_match("/watch\?v=(.*)/",$url,$matches)) {
                   $video_id = $matches[1];
               } else {
                   return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER,__FILE__,__LINE__,
                                "Unable to extract video id from url: $url"),null,null);
               }
+
+              /* If extra params were given, handle them here */
+              if(strcmp($extra_params,"")) {
+                /* Handle the HD format information */
+                if(preg_match("/fmt=(\d+)/",$extra_params,$matches)) {
+                  $extra_params="&ap=%2526fmt%3D".$matches[1];
+                }
+              }
+              
+              if(!strcmp($debugOutput,"true")) {
+                  print "<h2>URL Parsing Results</h2>";
+                  print "video_id: $video_id<br>";
+                  print "extra_embed_params: $extra_params<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 */
@@ -235,7 +254,8 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
                   $description=preg_replace("/&lt;/","<",$description);
                   $description=preg_replace("/&gt;/",">",$description);
                   $description=preg_replace("/&amp;/","&",$description);
-                  $description=preg_replace("/&rel=1/",$autoStartStr.$youtubeShowRelatedStr,$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);
@@ -313,10 +333,10 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
                 /* 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.'"></param>';
+                $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.$autoStartStr.$youtubeShowRelatedStr;
+                $description.= $video_id.$extra_params.$autoStartStr.$youtubeShowRelatedStr;
                 $description.= '" type="application/x-shockwave-flash" wmode="transparent" ';
                 $description.= 'width="'.$width.'" height="'.$height.'"></embed></object>';
               }