From 3feb31a7ea3788264c4fe4dbd30e531a4c5960fd Mon Sep 17 00:00:00 2001
From: Alan Jack Pippin <ajp@pippin.(none)>
Date: Sun, 25 Nov 2007 21:14:11 -0700
Subject: [PATCH] Added support for StickAm and MyspaceTV video embedding.

---
 ItemAddEmbedVideo.inc           | 135 +++++++++++++++++++++++++++++++-
 module.inc                      |   4 +-
 templates/ItemAddEmbedVideo.tpl |   3 +
 3 files changed, 139 insertions(+), 3 deletions(-)

diff --git a/ItemAddEmbedVideo.inc b/ItemAddEmbedVideo.inc
index 319a98e..46e290b 100644
--- a/ItemAddEmbedVideo.inc
+++ b/ItemAddEmbedVideo.inc
@@ -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("/&amp;/","&",$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";
diff --git a/module.inc b/module.inc
index 5159d82..c578a87 100644
--- a/module.inc
+++ b/module.inc
@@ -33,10 +33,10 @@ class EmbedVideoModule extends GalleryModule {
 	$this->setId('embedvideo');
 	$this->setName($gallery->i18n('Embed Video'));
 	$this->setDescription($gallery->i18n('Add embedded videos from the web'));
-	$this->setVersion('1.0.7');
+	$this->setVersion('1.0.8');
 	$this->setGroup('import', $gallery->i18n('Import'));
 	$this->setCallbacks('getSiteAdminViews');
-	$this->setRequiredCoreApi(array(7, 4));
+	$this->setRequiredCoreApi(array(7, 3));
 	$this->setRequiredModuleApi(array(3, 0));
     }
 
diff --git a/templates/ItemAddEmbedVideo.tpl b/templates/ItemAddEmbedVideo.tpl
index 01cf20a..3c29ff4 100644
--- a/templates/ItemAddEmbedVideo.tpl
+++ b/templates/ItemAddEmbedVideo.tpl
@@ -27,6 +27,9 @@
     <b>Revver:</b> http://www.revver.com/watch/xxxxxx<br>
     <b>Dailymotion:</b> http://www.dailymotion.com/video/xxxxxxxxxxx<br>
     <b>Divshare:</b> http://www.divshare.com/download/xxxxxxxxx<br>
+    <b>Stickam:</b> http://www.stickham.com/editMediaComment.do?method=load&mId=xxxxxxxxx<br>
+    <b>Myspace1:</b> http://vids.myspace.com/index.cfm?fuseaction=vids.individual&VideoID=xxxxxxxx<br>
+    <b>Myspace2:</b> http://myspacetv.com/index.cfm?fuseaction=vids.individual&videoid=xxxxxxxx<br>
     <br>
     <b><u>Supported File Types:</u></b><br>
     <b>FlashVideo (.flv):</b> http://aaa.bbb.ccc/video.flv<br>
-- 
2.34.1