From bbe9d512174553b9b410742bb82c69ffa67911f5 Mon Sep 17 00:00:00 2001 From: "Alan J. Pippin" Date: Thu, 17 Apr 2008 21:46:59 -0600 Subject: [PATCH] Added support for new youtube API: GDATA. Deprecated youtubeDevId --- ItemAddEmbedVideo.inc | 204 +++++++++++------------------- templates/EmbedVideoSiteAdmin.tpl | 3 - 2 files changed, 74 insertions(+), 133 deletions(-) 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 "

Variable Parameters

\n"; print "debugOutput=$debugOutput
\n"; print "useInternalFlvPlayer=$useInternalFlvPlayer
\n"; - print "youtubeDevId=$youtubeDevId
\n"; print "youtubeShowRelated=$youtubeShowRelated
\n"; print "width=$width
\n"; print "height=$height
\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 "

URL Parsing Results

"; + print "\n

Youtube URL Parsing Results

"; print "video_id: $video_id
"; print "extra_embed_params: $extra_params
"; + print "gdata feed: $feed
"; print "
"; } - - /* 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('//i', $contents, $matches); - $summary=$matches[1]; - - /* Extract the title from the webpage contents */ - preg_match('//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("/"/","'",$description); - $description=preg_replace("/</","<",$description); - $description=preg_replace("/>/",">",$description); - $description=preg_replace("/&/","&",$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

Youtube XML Dump

"; - print "$xml"; - print "
"; - } + 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\>/smi",$xml, $title); - preg_match_all("/\(.+?)\<\/description\>/smi",$xml, $description); - preg_match_all("/\(.+?)\<\/thumbnail_url\>/smi",$xml, $thumbnail); + if(!strcmp($debugOutput,"true")) { + print "\n

Youtube XML Dump

"; + print "$xml"; + print "
"; + } - array_shift($title); - array_shift($thumbnail); - array_shift($description); + /* Extract certain information from the xml feed */ + preg_match_all("/\(.+?)\<\/media:title\>/smi",$xml, $title); + preg_match_all("/\(.+?)\<\/media:description\>/smi",$xml, $description); + preg_match_all("/\"; + print "summary: $summary
"; + print "thumbnail: $thumbnail
"; + } - /* 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 = ''; - $description.= ''; - $description.= ''; - $description.= ''; + /* 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 = ''; + $description.= ''; + $description.= ''; + $description.= ''; + /* ********************************** * 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 @@ externalFlvPlayerVarsflashvars= options for external flash player {g->text text="provides the module with the flashvars to use for the external flash player"} - youtubeDevIdxxxxxxxxxxx - {g->text text="specify the youtube Developer ID used when this plugin makes API calls to youtube"} - youtubeShowRelatedtrue/false {g->text text="specify whether you want to show the related video links in the youtube embedded player"} -- 2.34.1