From 1b1822456d66be4761748a02d9f1d9e8caefb8be Mon Sep 17 00:00:00 2001
From: Alan Jack Pippin <ajp@pippin.(none)>
Date: Sat, 17 Nov 2007 14:10:30 -0700
Subject: [PATCH] Added support for revver, dailymotion, and divshare embedded
 videos. Added support for adding youtube videos without a youtube developer
 ID. Fixed default watermark alignment. Added error checking code when trying
 to extract embedded video content from a url.

---
 ItemAddEmbedVideo.inc           | 499 +++++++++++++++++++++++---------
 module.inc                      |   2 +-
 templates/ItemAddEmbedVideo.tpl |   5 +
 3 files changed, 374 insertions(+), 132 deletions(-)

diff --git a/ItemAddEmbedVideo.inc b/ItemAddEmbedVideo.inc
index 4e517ac..319a98e 100644
--- a/ItemAddEmbedVideo.inc
+++ b/ItemAddEmbedVideo.inc
@@ -89,27 +89,27 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	   $autoStart = $this->getParameter($ItemAddEmbedVideo, 'autoStart', "false");
 	   $watermarkImage = $this->getParameter($ItemAddEmbedVideo, 'watermarkImage', "");
 	   $watermarkVideos = $this->getParameter($ItemAddEmbedVideo, 'watermarkVideos', "false");
-	   $watermarkAlignment = $this->getParameter($ItemAddEmbedVideo, 'watermarkAlignment', "center");
+	   $watermarkAlignment = $this->getParameter($ItemAddEmbedVideo, 'watermarkAlignment', "left");
 
 	   /* Print our stored/set Parameters */
 	   if(!strcmp($debugOutput,"true")) {
-	     print "<hr>";
-	     print "<h2>Variable Parameters</h2>";
-	     print "debugOutput=$debugOutput<br>";
-	     print "useInternalFlvPlayer=$useInternalFlvPlayer<br>";
-	     print "youtubeDevId=$youtubeDevId<br>";
-	     print "youtubeShowRelated=$youtubeShowRelated<br>";
-	     print "width=$width<br>";
-	     print "height=$height<br>";
-	     print "externalFlvPlayer=$externalFlvPlayer<br>";
-	     print "externalFlvPlayerVars=$externalFlvPlayerVars<br>";
-	     print "flvThumbnail=$flvThumbnail<br>";
-	     print "useRemoteSize=$useRemoteSize<br>";
-	     print "autoStart=$autoStart<br>";
-	     print "watermarkVideos=$watermarkVideos<br>";
-	     print "watermarkImage=$watermarkImage<br>";
-	     print "watermarkAlignment=$watermarkAlignment<br>";
-	     print "<hr>";
+	     print "\n<hr>";
+	     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";
+	     print "externalFlvPlayer=$externalFlvPlayer<br>\n";
+	     print "externalFlvPlayerVars=$externalFlvPlayerVars<br>\n";
+	     print "flvThumbnail=$flvThumbnail<br>\n";
+	     print "useRemoteSize=$useRemoteSize<br>\n";
+	     print "autoStart=$autoStart<br>\n";
+	     print "watermarkVideos=$watermarkVideos<br>\n";
+	     print "watermarkImage=$watermarkImage<br>\n";
+	     print "watermarkAlignment=$watermarkAlignment<br>\n";
+	     print "<hr>\n";
 	   }
 
 	   /* Store other string constants we'll use later */
@@ -117,6 +117,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	   /* youtube */
 	   $youtubeUrlPattern="youtube.com";
 	   $youtubeApiUrl="http://www.youtube.com/api2_rest";
+	   $youtubeThumbnailUrl="http://img.youtube.com/vi/";
 	   /* We can't extract the server size from youtube */
 	   $youtubeWidth="425";
 	   $youtubeHeight="350";
@@ -135,6 +136,18 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	   /* metacafe */
 	   $metacafeUrlPattern="metacafe.com";
 	   $metacafeThumbnailUrl="http://www.metacafe.com/thumb/";
+
+	   /* revver */
+	   $revverUrlPattern="revver.com";
+	   $revverThumbnailUrl="http://frame.revver.com/frame/120x90/";
+
+	   /* dailymotion */
+	   $dailymotionUrlPattern="dailymotion.com";
+	   $dailymotionThumbnailUrl="http://www.dailymotion.com/thumbnail/160x120/video/";
+
+	   /* divshare */
+	   $divshareUrlPattern="divshare.com";
+	   $divshareThumbnailUrl="http://www.divshare.com/direct/video_thumb/";
 	   
 	   /* Gallery2 specific paths and variables */
 	   $urlGenerator =& $gallery->getUrlGenerator();
@@ -161,86 +174,141 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 				"Unable to extract video id from url: $url"),null,null);
 	       }
 	       
-	       /* Make sure we have a valid youtube developer id */
+	       /* 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)) {
-		   return array(GalleryCoreApi::error(ERROR_CONFIGURATION_REQUIRED,__FILE__,__LINE__,
-				"Invalid/missing YouTube developer ID: $dev_id"),null,null);
-	       }
-	       
-	       /* 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);
-	       }
+		 /* No developer ID found. Proceed with direct page parsing. */
 
-	       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);
-	       }
-	       
-	       if(!strcmp($debugOutput,"true")) {
-		 print "<h2>Youtube XML Dump</h2>";
-		 print "$xml";
-		 print "<hr>";
-	       }
-	       
-	       /* 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);
+		 /* 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);
+		 }
 	       
-	       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++){	  
+		 /* 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("/&rel=1/",$autoStartStr.$youtubeShowRelatedStr,$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);
+		 }
+		 
+	       } 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);
+		 }
+		 
+		 if(!strcmp($debugOutput,"true")) {
+		   print "\n<h2>Youtube XML Dump</h2>";
+		   print "$xml";
+		   print "<hr>";
+		 }
+		 
+		 /* 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);
+		 
+		 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];
+		 
+		 /* 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 autoplay or not based on the autoStart parameter */
+		 $autoStartStr="";
+		 if(!strcmp($autoStart,"true")) {
+		   $autoStartStr="&autoplay=1";
+		 }
+		 
+		 /* 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.'"></param>';
+		 $description.= '<param name="wmode" value="transparent"></param>';
+		 $description.= '<embed src="http://www.youtube.com/v/';
+		 $description.= $video_id.$autoStartStr.$youtubeShowRelatedStr;
+		 $description.= '" type="application/x-shockwave-flash" wmode="transparent" ';
+		 $description.= 'width="'.$width.'" height="'.$height.'"></embed></object>';
+		 $description.= "<br>$summary";
 	       }
-
-	       /* Store the information found in some local variables */
-	       $title = $title[0][0];
-	       $summary = $description[0][0];
-	       $thumbnail = $thumbnail[0][0];
-
-	       /* 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 autoplay or not based on the autoStart parameter */
-	       $autoStartStr="";
-	       if(!strcmp($autoStart,"true")) {
-		 $autoStartStr="&autoplay=1";
-	       }
-
-	       /* 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.'"></param>';
-	       $description.= '<param name="wmode" value="transparent"></param>';
-	       $description.= '<embed src="http://www.youtube.com/v/';
-	       $description.= $video_id.$autoStartStr.$youtubeShowRelatedStr;
-	       $description.= '" type="application/x-shockwave-flash" wmode="transparent" ';
-	       $description.= 'width="'.$width.'" height="'.$height.'"></embed></object>';
-	       $description.= "<br>$summary";
-
 	   /*
 	    **********************************
 	    * Embed a Google Video
@@ -344,13 +412,17 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	       $thumbnail=$yahooThumbnailUrl.$vid_id."_01";
 
 	       /* Format the description to hold a reference to the embedded video */
-	       preg_match('/(<embed src.+?<\/embed>)/', $contents, $matches);
-	       $description=$matches[1];
-	       if(!strcmp($useRemoteSize,"false")) {
-		 $description=preg_replace("/width='\d+'/","width='".$width."'",$description);
-		 $description=preg_replace("/height='\d+'/","height='".$height."'",$description);
+	       if(preg_match('/(<embed src.+?<\/embed>)/', $contents, $matches)) { 
+		 $description=$matches[1];
+		 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);
 	       }
-	       $description.= "<br>$summary";
 
 	   /*
 	    **********************************
@@ -387,21 +459,185 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	       $thumbnail=$metacafeThumbnailUrl.$item_id.".jpg";
 
 	       /* Format the description to hold a reference to the embedded video */
-	       preg_match('/(embed src.+?\/embed)/', $contents, $matches);
-	       $description="<".$matches[1];
-	       $description=preg_replace("/&quot;/","'",$description);
-	       if(!strcmp($useRemoteSize,"false")) {
-		 $description=preg_replace("/width='\d+'/","width='".$width."'",$description);
-		 $description=preg_replace("/height='\d+'/","height='".$height."'",$description);
+	       if(preg_match('/(embed src.+?\/embed)/', $contents, $matches)) { 
+		 $description="<".$matches[1];
+		 $description=preg_replace("/&quot;/","'",$description);
+		 if(!strcmp($useRemoteSize,"false")) {
+		   $description=preg_replace("/width='\d+'/","width='".$width."'",$description);
+		   $description=preg_replace("/height='\d+'/","height='".$height."'",$description);
+		 }
+		 if(!strcmp($autoStart,"true")) {
+		   $description=preg_replace("/\.swf/",".swf?playerVars=autoPlay=yes",$description);
+		 }
+		 $description.= "</embed>";
+		 $description.= "<br>$summary";
+	       } else {
+		 return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__,
+			"Unable to extract embedded video information from url: $url"),NULL,NULL);
 	       }
-	       if(!strcmp($autoStart,"true")) {
-		 $description=preg_replace("/\.swf/",".swf?playerVars=autoPlay=yes",$description);
+
+           /*
+	    **********************************
+	    * Embed a Revver Video
+	    **********************************
+	    * TODO: The autoStart parameter doesn't work with the yahoo video player
+            */
+	   } else if(preg_match("/$revverUrlPattern/",$url)) {
+
+	       /* Make sure we can extract a itemID */
+	       if(preg_match("/\/watch\/(.+)/",$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);
 	       }
-	       $description.= "</embed>";
-	       $description.= "<br>$summary";
 
+	       /* 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 */
+	       if(preg_match('/"video_description">(.+?)<\/p>/i', $contents, $matches)) {
+		 $summary=$matches[1];
+	       }
+	       if(preg_match('/"video_description">(.+)/i', $contents, $matches)) {
+		 $summary=$matches[1];
+	       }
+
+	       /* Extract the title from the webpage contents */
+	       preg_match('/digg_title = \'(.+?)\'/i', $contents, $matches);
+	       $title=$matches[1];
+	       
+	       /* Build the thumbnail URL from the item_id */
+	       $thumbnail=$revverThumbnailUrl.$item_id.".jpg";
+
+	       /* Format the description to hold a reference to the embedded video */
+	       if(preg_match('/<input class.+?(script src.+?\/script)/', $contents, $matches)) {
+		 $description="<".$matches[1];
+		 if(!strcmp($useRemoteSize,"false")) {
+		   $description=preg_replace("/width:\d+/","width:".$width,$description);
+		   $description=preg_replace("/height:\d+/","height:".$height,$description);
+		 }
+		 if(!strcmp($autoStart,"true")) {
+		   preg_match('/(height:\d+)/',$description,$matches);
+		   $height=$matches[1];
+		   $description=preg_replace("/$height/",$height.";autoplay:true",$description);
+		 }
+		 $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 DailyMotion Video
+	    **********************************
+            * TODO: The autoStart parameter doesn't work with the yahoo video player
+            */
+	   } else if(preg_match("/$dailymotionUrlPattern/",$url)) {
+	     
+	       /* Make sure we can extract a itemID */
+	       if(preg_match("/\/video\/(.+)/",$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 */
+	       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="Dailymotion : (.+?)" \/>/i', $contents, $matches);
+	       $title=$matches[1];	       
+	       
+	       /* Build the thumbnail URL from the item_id */
+	       $thumbnail=$dailymotionThumbnailUrl.$item_id;
 
-	      /*
+	       /* Format the description to hold a reference to the embedded video */
+	       if(preg_match('/Embeddable Player:.+?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 DivShare Video
+	    **********************************
+            */
+	   } else if(preg_match("/$divshareUrlPattern/",$url)) {
+	     
+	       /* Make sure we can extract a itemID */
+	       if(preg_match("/\/download\/(.+)/",$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 */
+	       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];
+	       // Right now, the description is a plug for divshare, nothing user specific about it
+	       $summary="";
+
+	       /* Extract the title from the webpage contents */
+	       preg_match('/<title>(.+?) - Divshare<\/title>/i', $contents, $matches);
+	       $title=$matches[1];
+	       
+	       /* Build the thumbnail URL from the item_id */
+	       $thumbnail=$divshareThumbnailUrl.$item_id;
+
+	       /* Format the description to hold a reference to the embedded video */
+	       if(preg_match('/(<embed src.+?<\/embed>)/', $contents, $matches)) { 
+		 $description=$matches[1];
+		 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
 	    **********************************
@@ -592,16 +828,17 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	   
 	   /* General debug output */
 	   if(!strcmp($debugOutput,"true")) {
-	       print "<h2>Item Parameters</h2>";
-	       print "url: $url <br>";
-  	       print "title: $title <br>";
-	       print "thumbnailUrl: <img src=\"".$thumbnail."\">\n</a>".$summary."</p>";
-	       print "description: <p>$description</p>";
-	       print "thumbnail: $tmpFile <br>";
-	       print "mimeType: $mimeType <br>";
-	       print "fileName: $fileName <br>";
-	       print "width: $width <br>";
-	       print "height: $height <br>";
+	       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 "summary: <p>$summary</p>\n";
+	       print "description: <p>$description</p>\n";
+	       print "thumbnail: $tmpFile <br>\n";
+	       print "mimeType: $mimeType <br>\n";
+	       print "fileName: $fileName <br>\n";
+	       print "width: $width <br>\n";
+	       print "height: $height <br>\n";
 	       print "<hr>";
 	   }
 
@@ -647,9 +884,9 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	       }
 	   }
 	   if(!strcmp($debugOutput,"true")) {
-	       print "<h2>Thumbnail Resize</h2>";
-	       print "$debugString";
-	       print "<hr>";
+	       print "\n<h2>Thumbnail Resize</h2>\n";
+	       print "$debugString\n";
+	       print "<hr>\n";
 	   }
 
 	   /* Watermark the video thumbnail image if indicated by our parameter */
@@ -744,14 +981,14 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	     
 	     /* General debug output */
 	     if(!strcmp($debugOutput,"true")) {
-	       print "<h2>Watermark Operation</h2>";
-	       print "watermarkImage: $watermarkImage <br>";
-	       print "watermarkTmpImage: $watermark <br>";
-	       print "watermarkMimeType: $watermarkMimeType <br>";
-	       print "watermarkWidth: $watermarkWidth <br>";
-	       print "watermarkHeight: $watermarkHeight <br>";
-	       print "watermarkedWidth: $thumbnailWidth <br>";
-	       print "watermarkedHeight: $thumbnailHeight <br>";
+	       print "\n<h2>Watermark Operation</h2>\n";
+	       print "watermarkImage: $watermarkImage <br>\n";
+	       print "watermarkTmpImage: $watermark <br>\n";
+	       print "watermarkMimeType: $watermarkMimeType <br>\n";
+	       print "watermarkWidth: $watermarkWidth <br>\n";
+	       print "watermarkHeight: $watermarkHeight <br>\n";
+	       print "watermarkedWidth: $thumbnailWidth <br>\n";
+	       print "watermarkedHeight: $thumbnailHeight <br>\n";
 	     }
 
 	     /* Apply the watermark image to the thumbnail */
@@ -769,7 +1006,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 	     }
 
 	     if(!strcmp($debugOutput,"true")) {
-	       print "watermarked Image: $tmpFile <br>";
+	       print "\nwatermarked Image: $tmpFile <br>";
 	       print "<hr>";
 	     }
 		       
@@ -796,7 +1033,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin {
 					   'warnings' => array());
 
 	   if(!strcmp($debugOutput,"true")) {
-	       print "<br><br><h2>Video Successfully Added to your Gallery Album</h2><br><br><hr>";
+	       print "\n<br><br><h2>Video Successfully Added to your Gallery Album</h2><br><br><hr>";
 	   }
        }
        
diff --git a/module.inc b/module.inc
index 8b051ab..5159d82 100644
--- a/module.inc
+++ b/module.inc
@@ -33,7 +33,7 @@ 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.6');
+	$this->setVersion('1.0.7');
 	$this->setGroup('import', $gallery->i18n('Import'));
 	$this->setCallbacks('getSiteAdminViews');
 	$this->setRequiredCoreApi(array(7, 4));
diff --git a/templates/ItemAddEmbedVideo.tpl b/templates/ItemAddEmbedVideo.tpl
index 33d8634..01cf20a 100644
--- a/templates/ItemAddEmbedVideo.tpl
+++ b/templates/ItemAddEmbedVideo.tpl
@@ -24,12 +24,17 @@
     <b>GoogleVideo:</b> http://video.google.com/videoplay?docid=xxxxxxxxxxx<br>
     <b>YahooVideo:</b> http://video.yahoo.com/video/play?vid=xxxxxx<br>
     <b>Metacafe:</b> http://www.metacafe.com/watch/xxxxxx/xxxxxx<br>
+    <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>
     <br>
     <b><u>Supported File Types:</u></b><br>
     <b>FlashVideo (.flv):</b> http://aaa.bbb.ccc/video.flv<br>
     <b>FlashVideo (.swf):</b> http://aaa.bbb.ccc/video.swf<br>
     <br>
 
+    <a href="http://codex.gallery2.org/Gallery2:Modules:embedvideo">Embed Video Module Help Page</a>
+
   </div>
 
   <div class="gbBlock">
-- 
2.34.1