从TED嵌入代码中提取视频缩略图

我正在尝试从TED视频嵌入代码中提取视频缩略图。为什么?好吧, 我正在使用一个WordPress主题, 该主题使用一个自定义字段来处理视频, 但是该字段的缩略图功能不是为TED创建的。我正在尝试重新调整它。
这是视频缩略图检索功能(其中涵盖了YouTube和Vimeo):

function woo_get_video_image($embed) {$video_thumb = ''; /* Let's start by looking for YouTube, then Vimeo */ if ( preg_match( '/youtube/', $embed ) ) {// YouTube - get the video code if this is an embed code (old embed) preg_match( '/youtube\.com\/v\/([\w\-]+)/', $embed, $match); // YouTube - if old embed returned an empty ID, try capuring the ID from the new iframe embed if( !isset($match[1]) ) preg_match( '/youtube\.com\/embed\/([\w\-]+)/', $embed, $match); // YouTube - if it is not an embed code, get the video code from the youtube URL if( !isset($match[1]) ) preg_match( '/v\=(.+)& /', $embed , $match); // YouTube - get the corresponding thumbnail images if( isset($match[1]) ) $video_thumb = "http://img.youtube.com/vi/".$match[1]."/0.jpg"; } else if ( preg_match( '/vimeo/', $embed ) ) {// Vimeo - get the video thumbnail preg_match( '#http://player.vimeo.com/video/([0-9]+)#s', $embed, $match ); if ( isset($match[1]) ) {$video_id = $match[1]; // Try to get a thumbnail from Vimeo $get_vimeo_thumb = unserialize(file_get_contents_curl('http://vimeo.com/api/v2/video/'. $video_id .'.php')); $video_thumb = $get_vimeo_thumb[0]['thumbnail_large']; }}// return whichever thumbnail image you would like to retrieve return $video_thumb; }

这是典型的TED嵌入:
< iframe src="http://img.readke.com/220531/09555KG3-0.jpg" width="560" height="315" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen> < /iframe>

TED API文档(如果有帮助的话):http://developer.ted.com/API_Docs
我似乎在自定义preg_match和/或$ get_vimeo_thumb部分时遇到麻烦(至少这是我认为正在发生的事情)。基本上, 我正在学习PHP的这一部分, 而且它很坎.。
#1你可以试试看
$source = 'http://www.ted.com/talks/andy_puddicombe_all_it_takes_is_10_mindful_minutes'; $tedJson = json_decode(file_get_contents('http://www.ted.com/talks/oembed.json?url='.urlencode($source)), TRUE); pr($tedJson);

你将在响应中获取json
#2我不知道是什么让我回答这个问题, 但这是一个(经过测试的工作原理)又快又脏的问题。你可能想要在其中某处进行一些验证。.而且, 如果我为此而获得报酬, 那它就不会使用file_get_contents, 而我可能会使用DOMDocument。
$embed = '< iframe src="http://img.readke.com/220531/09555KG3-0.jpg" width="560" height="315" frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen> < /iframe> '; function getThumbnail($embed){ preg_match("/src\=\"(.+)?\"/", $embed, $matches); $uri = $matches[1]; preg_match("/posterUrl\s=\s\'(.+)?\'/", file_get_contents($uri), $matches); echo $matches[1]; }getThumbnail($embed);

我们要获取iframe的src, 获取内容, 然后抓取JS embed变量以获取它们用于缩略图的图像。
【从TED嵌入代码中提取视频缩略图】显然, 你不会回显输出, 并且谁知道这是否违反他们的TOS。事实上, 我敢打赌, 除非你保留徽标, 否则至少不会让你使用此徽标(事实并非如此)。使用风险自负。

    推荐阅读