Added support for StickAm and MyspaceTV video embedding.
[embedvideo/.git] / ItemAddEmbedVideo.inc
index 319a98efc03848c0bd699d75a584c0d7585d8b87..46e290b2904cce8df84ef9154ef40e36cc34e1d4 100644 (file)
@@ -148,6 +148,15 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
           /* divshare */
           $divshareUrlPattern="divshare.com";
           $divshareThumbnailUrl="http://www.divshare.com/direct/video_thumb/";
+
+          /* stickam */
+          $stickamUrlPattern="stickam.com";
+          $stickamThumbnailUrl="http://static.stickam.com/";
+
+          /* myspace */
+          $myspaceUrlPattern="vids.myspace.com";
+          $myspaceUrlPattern2="myspacetv.com";
+          $myspaceThumbnailUrl="http://mediaservices.myspace.com/services/rss.ashx?type=video&videoID=";
           
           /* Gallery2 specific paths and variables */
           $urlGenerator =& $gallery->getUrlGenerator();
@@ -636,7 +645,131 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
                 return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
                        "Unable to extract embedded video information from url: $url"),NULL,NULL);
               }
+
+
+
+          /*
+           **********************************
+           * Embed a StickAm Video
+           **********************************
+            */
+          } else if(preg_match("/$stickamUrlPattern/",$url)) {
+
+              /* Make sure we can extract a itemID */
+              if(preg_match("/mId=(.+)/",$url,$matches)) {
+                  $item_id = $matches[1];
+                  $item_id=preg_replace("/\/$/","",$item_id);
+              } else {
+                  return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER,__FILE__,__LINE__,
+                               "Unable to extract item id from url: $url"),null,null);
+              }
+
+              /* Grab the contents of the webpage used to display the video on video.google.com */
+              $url=preg_replace("/&/","&",$url);
+              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];             
               
+              /* Build the thumbnail URL from the item_id */
+              if(preg_match('/movieName=(.+?)&userId=/i', $contents, $matches)) { 
+                $thumbnail_url=$matches[1];
+                $thumbnail_url=preg_replace("/%2F/","/",$thumbnail_url);
+                $thumbnail=$stickamThumbnailUrl.$thumbnail_url.".jpg";
+              } else {
+                return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+                       "Unable to extract thumbnail from url: $url"),NULL,NULL);
+              }
+
+              /* Format the description to hold a reference to the embedded video */
+              if(preg_match('/input type.+?'.$item_id.'.+?value="(.+?)"/', $contents, $matches)) { 
+                $description=$matches[1];
+                $description=preg_replace("/&quot;/","'",$description);
+                $description=preg_replace("/&lt;/","<",$description);
+                $description=preg_replace("/&gt;/",">",$description);
+                if(!strcmp($useRemoteSize,"false")) {
+                  $description=preg_replace("/width='\d+'/","width='".$width."'",$description);
+                  $description=preg_replace("/height='\d+'/","height='".$height."'",$description);
+                }
+                $description.= "<br>$summary";
+              } else {
+                return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+                       "Unable to extract embedded video information from url: $url"),NULL,NULL);
+              }
+            
+          /*
+           **********************************
+           * Embed a Myspace Video
+           **********************************
+            */
+          } else if(preg_match("/($myspaceUrlPattern|$myspaceUrlPattern2)/",$url)) {
+
+              /* Make sure we can extract a itemID */
+              if(preg_match("/videoid=(.+)/i",$url,$matches)) {
+                  $video_id = $matches[1];
+                  $video_id=preg_replace("/\/$/","",$video_id);
+              } else {
+                  return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER,__FILE__,__LINE__,
+                               "Unable to extract video id from url: $url"),null,null);
+              }
+
+              /* 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('/class="description" id="vid_description">(.+?)<\/div>/i', $contents, $matches);
+              $summary=$matches[1];
+
+              /* Extract the title from the webpage contents */
+              preg_match('/<h1>(.+?)<\/h1>/i', $contents, $matches);
+              $title=$matches[1];             
+              
+              /* Build the thumbnail URL from the item_id */
+              $video_info_url=$myspaceThumbnailUrl.$video_id;
+              list ($successfullyCopied, $video_info, $response, $headers) =
+                GalleryCoreApi::fetchWebPage($video_info_url, $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('/thumbnail url="(.+?)"/',$video_info, $matches)) {
+                $thumbnail = $matches[1];
+              } else {
+                return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+                       "Unable to extract thumbnail information from url: $url"),NULL,NULL);
+              }
+
+              /* Format the description to hold a reference to the embedded video */
+              if(preg_match('/(&lt;embed src.+?\/embed&gt;)/', $contents, $matches)) { 
+                $description=$matches[1];
+                $description=preg_replace("/&quot;/","'",$description);
+                $description=preg_replace("/&lt;/","<",$description);
+                $description=preg_replace("/&gt;/",">",$description);
+                if(!strcmp($useRemoteSize,"false")) {
+                  $description=preg_replace("/width='\d+'/","width='".$width."'",$description);
+                  $description=preg_replace("/height='\d+'/","height='".$height."'",$description);
+                }
+                $description.= "<br>$summary";
+              } else {
+                return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+                       "Unable to extract embedded video information from url: $url"),NULL,NULL);
+              }
+            
           /*
            **********************************
            * Embed a remote .swf file
@@ -831,7 +964,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
               print "\n<h2>Item Parameters</h2>\n";
               print "url: $url <br>\n";
               print "title: $title <br>\n";
-              print "thumbnailUrl: <img src=\"".$thumbnail."\"> <br>\n";
+              print "thumbnailUrl: $thumbnail <br><img src=\"".$thumbnail."\"> <br>\n";
               print "summary: <p>$summary</p>\n";
               print "description: <p>$description</p>\n";
               print "thumbnail: $tmpFile <br>\n";