V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aligo
V2EX  ›  问与答

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

  •  
  •   aligo · 2012-06-05 10:13:24 +08:00 · 10485 次点击
    这是一个创建于 4546 天前的主题,其中的信息可能已经有所发展或是发生改变。
    具体说就是通过一个url,解析出一个用于embed的播放器地址和一张或多张截图(最好是大小和视频大小相同的,尤其是图片好像国内的视频网站都没提供)

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

    万分感谢
    13 条回复    1970-01-01 08:00:00 +08:00
    gaocheng
        1
    gaocheng  
       2012-06-05 10:37:34 +08:00   ❤️ 2
    优酷 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
        2
    dragonbone  
       2012-06-05 10:54:52 +08:00   ❤️ 2
    1,播放器只能用视频网站自己的,这个不用抓,一行代码就可以了
    2,抓截图,这个有点难,必须获取的flv的真实地址,因为网站都做了防盗链,但还是可以破解的,具体可以通过flash工具反编译他们的播放器,查看一下流程,有些网站就提供了这样的功能,你可以直接从这些网站获取,然后通过ffmpeg解码这些视频,保存几张截图

    不用谢,咱很闲
    aligo
        3
    aligo  
    OP
       2012-06-05 10:56:30 +08:00   ❤️ 1
    @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
        4
    aligo  
    OP
       2012-06-05 21:32:21 +08:00   ❤️ 1
    折腾了半天,看了各种各样的小道消息,终于首先搞定了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
        5
    onoli  
       2012-06-05 23:51:52 +08:00
    不用他们api的话,除了youku, 其它都要用正则扫出他们的id,才能获取图片,用正则扫土豆比较恶心也比较麻烦
    satgi
        6
    satgi  
       2012-06-06 00:04:50 +08:00
    土豆的。。。各种格式啊。。。
    gee
        7
    gee  
       2012-06-06 00:36:50 +08:00   ❤️ 1
    @aligo 我半年前有开始做一个国内的oembed,https://github.com/oneplace/OEmbed-it
    现在有些已经不能用了,不过还可以参考下
    gee
        9
    gee  
       2012-06-06 00:44:39 +08:00
    @aligo 这个研究完了把结果跟大家共享下吧,我正好更新一下 http://oembed.it/
    mopvhs
        10
    mopvhs  
       2012-06-06 09:25:11 +08:00   ❤️ 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];
    aligo
        11
    aligo  
    OP
       2012-06-06 09:55:58 +08:00
    @gee 好的,我先只弄一个优酷了
    @mopvhs 优酷那个url第一个和第二个只差一个等号吗?
    andy
        12
    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
        13
    lixiphp  
       2013-09-16 20:52:19 +08:00   ❤️ 1
    有JS的获取方法吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3633 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:30 · PVG 12:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.