抓取常用视频网站的播放器和截图

2012-06-05 10:13:24 +08:00
 aligo
具体说就是通过一个url,解析出一个用于embed的播放器地址和一张或多张截图(最好是大小和视频大小相同的,尤其是图片好像国内的视频网站都没提供)

没时间不太想一个个去研究,所以求个整理好的对应关系列表或者库什么的

万分感谢
10316 次点击
所在节点    问与答
13 条回复
gaocheng
2012-06-05 10:37:34 +08:00
优酷 http://dev.youku.com/
土豆 http://dev.tudou.com/v5/
酷6 http://dev.ku6.com/
56 http://dev.56.com/
搜狐视频 http://open.tv.sohu.com/index.jsp
腾讯视频、奇艺、音乐台的没有找到
dragonbone
2012-06-05 10:54:52 +08:00
1,播放器只能用视频网站自己的,这个不用抓,一行代码就可以了
2,抓截图,这个有点难,必须获取的flv的真实地址,因为网站都做了防盗链,但还是可以破解的,具体可以通过flash工具反编译他们的播放器,查看一下流程,有些网站就提供了这样的功能,你可以直接从这些网站获取,然后通过ffmpeg解码这些视频,保存几张截图

不用谢,咱很闲
aligo
2012-06-05 10:56:30 +08:00
@gaocheng 非常感谢,研究了一圈,汇报结果:
优酷通过api获取视频截图,要合作者id
土豆截图最大的也只有320x240
同时这两个东西哪里申请api调用权限?
酷6的话我太笨他提供的我不会用啊
56的话我没key也获取不了,而且文档的json范例和文档写的居然不一样,少了img项
搜狐一样也没有获取截图的方式



另外youtube获取截图的方式
http://img.youtube.com/vi/视频id/0.jpg
vimeo可以通过
http://vimeo.com/api/v2/video/视频id.json
获取到包括大张截图在内的很多信息
aligo
2012-06-05 21:32:21 +08:00
折腾了半天,看了各种各样的小道消息,终于首先搞定了youku:
正则:^(http:\/\/v.youku.com\/v_show\/id_(.*).html).*$
1是干净的url
2是下面要用的id
然后抓取
'http://v.youku.com/player/getPlayList/VideoIDS/' + id + '/version/5/source/out'
可以获得一些详细信息
例如标题.data[0].title
一张截图.data[0].logo
还有一堆乱七八糟的东西
最后flash播放器地址是
'http://player.youku.com/player.php/sid/' + id + '/v.swf'
onoli
2012-06-05 23:51:52 +08:00
不用他们api的话,除了youku, 其它都要用正则扫出他们的id,才能获取图片,用正则扫土豆比较恶心也比较麻烦
satgi
2012-06-06 00:04:50 +08:00
土豆的。。。各种格式啊。。。
gee
2012-06-06 00:36:50 +08:00
@aligo 我半年前有开始做一个国内的oembed,https://github.com/oneplace/OEmbed-it
现在有些已经不能用了,不过还可以参考下
gee
2012-06-06 00:39:08 +08:00
gee
2012-06-06 00:44:39 +08:00
@aligo 这个研究完了把结果跟大家共享下吧,我正好更新一下 http://oembed.it/
mopvhs
2012-06-06 09:25:11 +08:00
@aligo
优酷:
preg_match('@^http:\/\/v\.youku\.com\/v_show\/id_([\w\d+_-]*)\.html|^http:\/\/v\.youku\.com\/v_show\/id_([\w\d+_-]*)=\.html@i', $url, $matches);
$videoID = $matches[1];
$videoApi = 'http://v.youku.com/player/getPlayList/VideoIDS/'.$videoID;
土豆:
preg_match_all('/(<script.*>)(.*)(<\/script>)/imxsU',$data,$matches);
preg_match_all("/(icode = ')(.*)(' ,oid)/i",$matches[0][1],$results);
if (strlen($results[2][0])<11) {
preg_match_all('/(icode:\")(.*)(\")/i',$matches[0][1],$results);
}
$videoApi = 'http://api.tudou.com/v3/gw?method=item.info.get&appKey=myKey&format=json&itemCodes='.$results[2][0];
aligo
2012-06-06 09:55:58 +08:00
@gee 好的,我先只弄一个优酷了
@mopvhs 优酷那个url第一个和第二个只差一个等号吗?
andy
2012-06-20 14:52:18 +08:00
参考以上各位的代码,精简后的优酷python代码:

match=re.search(r'^http:\/\/v\.youku\.com\/v_show\/id_([-+_\w]+)=*\.html',str)
id=match.group(1)
return 'http://player.youku.com/player.php/sid/'+id+'/v.swf'
lixiphp
2013-09-16 20:52:19 +08:00
有JS的获取方法吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/38428

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX