互联网视频搜索一般解决方案

转:http://www.v2ex.com/t/38428

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

By aligo at 115 天前, 834 次点击
具体说就是通过一个url,解析出一个用于embed的播放器地址和一张或多张截图(最好是大小和视频大小相同的,尤其是图片好像国内的视频网站都没提供)

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

万分感谢
 
12 回复  |  直到 2012-06-20 14:52:18 PM
 
    1
 
gaocheng   115 天前   ♥ 1
 
优酷 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
腾讯视频、奇艺、音乐台的没有找到
 
    2
 
dragonbone   115 天前   ♥ 1
 
1,播放器只能用视频网站自己的,这个不用抓,一行代码就可以了
2,抓截图,这个有点难,必须获取的flv的真实地址,因为网站都做了防盗链,但还是可以破解的,具体可以通过flash工具反编译他们的播放器,查看一下流程,有些网站就提供了这样的功能,你可以直接从这些网站获取,然后通过ffmpeg解码这些视频,保存几张截图

不用谢,咱很闲
 
    3
 
aligo   115 天前
 
@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
获取到包括大张截图在内的很多信息
 
    4
 
aligo   115 天前
 
折腾了半天,看了各种各样的小道消息,终于首先搞定了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'
 
    5
 
onoli   114 天前
 
不用他们api的话,除了youku, 其它都要用正则扫出他们的id,才能获取图片,用正则扫土豆比较恶心也比较麻烦
 
    6
 
satgi   114 天前
 
土豆的。。。各种格式啊。。。
 
    7
 
gee   114 天前   ♥ 1
 
@aligo 我半年前有开始做一个国内的oembed,https://github.com/oneplace/OEmbed-it 
现在有些已经不能用了,不过还可以参考下
 
    9
 
gee   114 天前
 
@aligo 这个研究完了把结果跟大家共享下吧,我正好更新一下 http://oembed.it/
 
    10
 
mopvhs   114 天前   ♥ 1
 
@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];
 
    11
 
aligo   114 天前
 
@gee 好的,我先只弄一个优酷了
@mopvhs 优酷那个url第一个和第二个只差一个等号吗?
 
    12
 
andy   100 天前
 
参考以上各位的代码,精简后的优酷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'
posted @ 2012-09-29 09:24  piggy~~  阅读(304)  评论(0编辑  收藏  举报