优酷并不像youtube那样提供获取缩略图的API,要获取优酷缩略图,一种方法是用ffmpeg直接读取上述网站的某个视频,然后截取其中的某帧作为该视频的缩略图;另外一种方式则是想办法读取网站自身提供的视频缩略图。前者需要安装ffmpeg,暂时没有办法测试。所以选用第二种方法,通过正则表达式获取优酷自身提供的视频缩略图。
如何获取function get_youku_thumb($url) {
$content = file_get_contents($url);
preg_match( '/id="s_msn2".*?screenshot=(.*?)".?target=/', $content, $matchs );
return $matchs[1];
}
echo get_youku_thumb('http://v.youku.com/v_show/id_XMjkwMjg5MDQw.html');
运行上述代码,获取的图片路径是//output
http://g2.ykimg.com/01270F1F464F50877DA3960123193C0A16F2D8-447A-D539-840F-E8AC55D15507
这种方法是在网上发现的,原出处是用PHP获取优酷、土豆视频缩略图,不过正如文章作者所说,一旦优酷改变网页结构,代码也得跟着变。这篇文章中的方法已经无法获取缩略图了, 所以写了上面的代码。
思路与原作者是相同的,通过读取优酷视频网页的代码,找到分享到社交网站(新浪、msn等)的代码,看看这部分是怎么写的,用正则表达式匹配。我使用的是转发到msn的代码,如下
href="http://profile.live.com/badge/?
&screenshot=[缩略图地址,我们需要的部分]" target="_blank">
有了这个结构,就可以写正则表达式匹配了。如果优酷更新结构,可以按照同样的方法更新正则表达式。但还是希望优酷能像youtube那样多一些API,方便开发者。
把过去的图片WordPress的缩略图,可以将获取缩略图的代码做成shortcode,直接在文章中调用。也可以通过custom_field方式记录优酷视频地址,在主循环中调用该函数获得缩略图,借助timthumb.php等脚本生成缓存存放到本地,就不用每次都去读网页了。
2012-08-04更新
发现有人已经做了现成的库可以调用,大家到这里获取。