抓取优酷土豆新浪等网站视频缩略图
最近遇到一个比较奇特的要求,也是我一直在考虑的问题,就是获取视频网站的视频缩略图。这样,可以很方便对带视频的界面进行美化。
常常看到优酷等网站本身或者给其他网站定制的内容中出现视频缩略图,但是一番搜索之后发现优酷本身好像没有开放类似的接口给普通用户。所以这个问题就被搁置下来了。最近有客户需要大量使用视频,而且是第三方的视频网站,并且在页面中也要应用视频截图。所以一番摸索之后发现有个好东西:视频抓取工具。
原作者页面:视频抓取工具
实际使用效果
使用方法
1 2 3 |
require_once “VideoUrlParser.class.php”; $url = “http://v.youku.com/v_show/id_XMjkwMzc0Njg4.html”; $info = VedioUrlParser::parse($url); |
之后,只需要在合适的地方输出$info就可以了。
应用示例
由于不能根据直接输入的frame视频框架来获取截图,因此必须显式地提供视频播放地址。这里我提供一个思路:
为需要的文章类型添加一个meta box(把以下代码扔functions.php里 2013/5/5 修正自定义box不能保存的问题)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
<?php add_action('admin_init', 'admin_init_fn'); function admin_init_fn() { add_meta_box('videourl', '视频地址', 'videourl_fn', 'post', 'normal', 'high', null); } function videourl_fn() { global $post; $video_url = get_post_meta( $post->ID, 'videourl', true ); ?> <th scope="row">视频输入播放地址:</th> <tr> <td> <label for="videourl"> <input id="videourl" type="text" size="75" name="videourl" value="<?php echo $video_url;?>" /> <br /><em>說明:输入视频播放地址,用于显示视频的缩略图。不需要请留空。</em> </label> </td> </tr> <?php } ?> add_action('wp_insert_post', 'insert_post_fn', 10, 2); function insert_post_fn($post_id, $post = null) { $meta_post_fields = array("videourl"); $goloop = false; if ($post->post_type == "post") { $mfs = $meta_post_fields; $goloop = true; } if ($goloop) { foreach ($mfs as $key) { $value = @$_POST[$key]; if (empty($value)) { delete_post_meta($post_id, $key); continue; } if (!is_array($value)) { if (!update_post_meta($post_id, $key, $value)) { add_post_meta($post_id, $key, $value); } } else { delete_post_meta($post_id, $key); foreach ($value as $entry) { add_post_meta($post_id, $key, $entry); } } } } } |
接着,就可以在后台看到这样的meta box
输入你想用的视频缩略图,然后在前台显示即可(我是写在了文章的主循环内)
1 2 3 4 5 6 7 |
<?php $video_url = get_post_meta(get_the_ID(), 'videourl', true); // check if the custum field has a value if($video_url != '') { require_once "/VideoUrlParser.class.php"; $info = VideoUrlParser::parse($video_url); echo "<a href=".get_permalink()."><img src=".$info['img']." /></a>"; }?> |
info含有的几个值,分别是img(用于视频缩略图),title(视频标题),url(地址),swf(视频swf播放地址)。我只用到了img和swf地址。具体的可以根据自己的需要进行调整。
感谢原作者。
转载请注明转自:抓取优酷土豆新浪等网站视频缩略图
感谢博主,也感谢原作者
为什么代码扔functions.php里就错误腻
@天天分享网 看看前后的符号没有错误~~
@axiu 好东西哦 研究研究
很好的解决方案
好东西~代码还是不太明白,不过晓得怎么在后台添加自定义区块了,谢谢分享~
直接qq截图。。。赫赫
我表示很长一段时间都是很苦逼的去截图!
@微趣网 哈哈,那多费劲啊,还不如不用
我一直用那个人的demo来手动抓取视屏图片,今天终于看到自动的办法了,貌似那个人的程序好像升级了,升级版没有提供分享。
@不亦乐乎 可能是要商用吧~~看他有做付费扩展的趋势。
您好!我是菜鸟,师傅你能不能说清楚点第二段代码是不是还有把/VideoUrlParser.class.php放到主题目录里,然后怎么用?
@天天分享网 然后比如你想放到首页,就打开index.php,在合适的地方输入
< ?phprequire_once "VideoUrlParser.class.php"; $url = "http://v.youku.com/v_show/id_XMjkwMzc0Njg4.html"; $info = VedioUrlParser::parse($url); echo $info[img];?>
其中$URL可以替换成想要的~
先来看看鄙人的wordperss小站http://www.everyshare.cn/
鄙站主要以视频为主,每篇文章里都有一张视频的截图http://www.everyshare.cn/2013/03/08/924.html
看上去感觉很不好看,但又考虑到小站首页http://www.everyshare.cn/要显示缩略图,文章里不得不放一张图片,然后来获取做首页的缩略图,最近在http://axiu.me/learning_notes/get_video_thumb_from_videosites/comment-page-2/看到这篇教程,但本人一点PHP知识都没,无法应用这篇教程来解决鄙站的缩略图问题,现在用现金请博主帮忙弄一下,小弟感激不尽qq517331016
学习了!正在找这个
@axiu @axiu 问个问题,怎么加个判断是视频文章就调用这个缩略图功能,不是就调用我的其他方式缩略图呢?谢谢
@SEV $video_url = get_post_meta( $post->ID, ‘videourl’, true );这段可以取出videourl的内容,然后判断它是否为空: if($video_url == “”),如果是就输出其他缩略图,不是(有这个视频的缩略图)就输出“这个”缩略图
@axiu 收到,我测试一下看看,3Q
@axiu
Fatal error: Call to undefined function curl_init() in D:\eigicphp\apache\htdocs\wordpress…..\VideoUrlParser.class.php on line 433 这个是什么错误呢?估计这个还是不太好用哦!
@SEV 那是php的函数,跟插件无关。你得加载php_curl.dll。在php.ini 文件里面找到php_curl.dll把前面的注释去掉
@axiu 原来如此,我是在本地测试的,我说怎么回事哦!再次感谢!哈啊哈左边那个评论很不错呢!
@SEV 谢谢~~
后台输入的视频地址保持不了不知道为什么?谢谢
@SEV 和你一样啊,怎么解决啊
@lll @SEV 不好意思,忘了段代码,已加上……
@axiu 谢谢了哦,嘿嘿
我也在用这个
把以下代码扔functions.php里 怎么提示错误 是不是复制出问题?
@木木 看看是不是有语法错误,比如括号啥的
有一点小问题,不过搞定了,谢谢了