优酷并不像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/?

url=[视频网址]

&Title=[视频标题]

&swfurl=[swfurl]

&screenshot=[缩略图地址,我们需要的部分]" target="_blank">

有了这个结构,就可以写正则表达式匹配了。如果优酷更新结构,可以按照同样的方法更新正则表达式。但还是希望优酷能像youtube那样多一些API,方便开发者。

把过去的图片WordPress的缩略图,可以将获取缩略图的代码做成shortcode,直接在文章中调用。也可以通过custom_field方式记录优酷视频地址,在主循环中调用该函数获得缩略图,借助timthumb.php等脚本生成缓存存放到本地,就不用每次都去读网页了。

2012-08-04更新

发现有人已经做了现成的库可以调用,大家到这里获取。

java 优酷视频缩略图_通过正则表达式获取优酷视频缩略图相关推荐

  1. java照片切换播放音乐_怎么将照片制作成视频并添加音乐呢

    目前在网上刷抖音和快手等短视频都能看到一种风格的视频,那就是电子相册视频.也就是把所有的图片放在一起,然后使用软件将图片变成视频播放出来.其实这些使用软件都会非常简单的.这种视频编辑功能不管在手机端还 ...

  2. python 腾讯视频签到_云函数实现腾讯视频vip自动签到

    云函数实现腾讯视频vip自动签到 不用每天都去手动签到啦,属实懒人操作.一 次设置可一直使用,除cookie过期需手动更新外. 教程比较细,纯手打,按教程来一般都没问题.如果在有什么地方不懂问我就行. ...

  3. java正则匹配英文句号_「正则表达式」王国奇遇记

    第一回 初来乍到 NPC: "欢迎来到正则表达式的国度,勇士!这里的每一个人都使用正则表达式,我是这里的 NPC,每一个来到这里的人都将由我代为介绍正则世界的规则,至于能领悟到何种境界,就看 ...

  4. java正则匹配英文句号_谈谈正则表达式中的句号.

    我们知道,正则表达式中,可以用 . 表示任意单个字符,但在underscore和jquery的源代码中,我们可以看到,这些著名类库的代码中,经常并不是用 . 来表示任意字符,而是使用 [\w\W] 或 ...

  5. java中jsoup编译网络_使用jsoup获取网络数据

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出 ...

  6. python炫酷特效代码_推荐几个炫酷的 Python 开源项目

    推荐几个炫酷的 Python 开源项目 项目一: Supervisor 简介: Supervisor 是实际企 业常用的一款 Linux/Unix 系统下的一个进程管理工具, 基于 Python 开发 ...

  7. python截取关键字后的字符串_使用正则表达式获取python中特定字符串之后的所有内容...

    如果要使用正则表达式,请使用re.findall:re.findall('(?<=com/).*$', "www.example.com/thedubaimall") # [ ...

  8. java动作监听退出程序_监听获取程序退出事件(Linux、Windows、Java、C++)

    监听程序退出事件,主要是用于程序的优雅退出. 下面针对Java.C++在Windows.Linux下的处理分别进行介绍. 1.Java监听程序退出事件 Java本身是跨平台的,不必关系Windows还 ...

  9. 小学计算机辅导计划,【小学信息技术培优补差计划】_小学信息技术培优补差计划...

    小学信息技术培优补差计划 我的博文 小学信息技术培优补差计划 发布人:凌渌笑 日期:2011-09-21 阅读392次 小学信息技术培优补差计划 一.指导思想 为顺利完成本学期的教学任务,提高本学期的 ...

  10. java 取pdf 文本域_使用PDFBox获取文本行的位置

    一般而言 要使用PDFBox提取文本(带或不带位置,颜色等额外信息),可以实例化 PDFTextStripper 或从中派生的类,并使用它: PDFTextStripper stripper = ne ...

最新文章

  1. QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)
  2. 皮一皮:论北方有多冷...
  3. java调用存储过程
  4. MyBatis--连接池模块
  5. /etc/passwd 与 /etc/shadow文件的区别
  6. 刷新页面 数组轮播
  7. 如何在golang http服务端程序中读取2次Request Body?(转)
  8. c语言第八章函数程序设计,C语言程序设计-第八章 函数.ppt
  9. PyTorch系列入门到精通——生成对抗网络一瞥
  10. 2020华为软件精英挑战赛-有向图找环
  11. jQuery学习_具备吸附功能的拖曳框
  12. fakeroot: preload library `libfakeroot.so' not found, aborting.
  13. 递归算法php,php递归算法经典实例
  14. 不定期备考小tips[常微][2] #20210528
  15. linux nvidia显卡驱动安装教程,LINUX的NVIDIA显卡驱动安装
  16. 计算机桌面设置,电脑怎么设置动态桌面
  17. 服务器配置443端口报错
  18. React爬坑之路二:Router+Redux
  19. Vue3+node.js网易云音乐实战项目(五)
  20. JS中children与childNodes的区别

热门文章

  1. Python-常用模块有哪些
  2. 微信小程序 学科竞赛比赛报名管理系统 Android hbuilderx App毕业设计
  3. 如何对比评价TOM邮箱、QQ邮箱,Gmail邮箱以及139邮箱?
  4. Linux静态库和动态库区别
  5. 哪些机器学习模型需要归一化
  6. PCAN-View如何保存报文?
  7. 【气动学】基于龙格库塔算法实现外弹道仿真含Matlab源码
  8. 批量修改文件夹中所有文件的格式为指定格式
  9. python中返回上一步操作_返回上一步的快捷键-百度经验
  10. 跟着实例学eclipse插件开发--第一篇:翻译插件