微博视频url解析

微博返回的视频链接都是短链接,类似http://t.cn/RX8Po3N 这样的格式。那么我们为了能够识别该链接是普通的网络链接还是视频链接,并且支持用自定义的播放器来播放视频的话,要做的东西就是解析这个短链接,获取真实的视频地址。

首先第一步就是要先把短链接转化成长链接,这里我们可以调用新浪开放平台获取短链接的富内容信息。内容结果如下:

其中object _type就是链接的类型,stream 里面的url 就是视频的真实地址了,这里看到是mp4的格式,这种情况就最理想了,就是视频的真实地址,我们可以直接播放下载了。

但其实并没有这么简单,很多时候我们解析到的url都不是以mp4格式的,而是类似这种

http://video.weibo.com/show?fid=1034:ba4e77345c94bc39e7fba0f690b1d26c

http://weibo.com/p/2304449fd45976218a4fd9bc8f1a9af6317dec

这两种视频链接我们是无法直接播放和下载的。只有通过特殊手段才可以。先来说一下以video.weibo.com格式的视频的解析办法:

我们直接在浏览器中打开该url,然后右键查看网页源代码,就可以找到该视频的真实地址:

那么我们要拿到这个真实的mp4地址就非常简单了,先下载该网页源代码,并用正执表达式解析即可:

String result = HttpUtils.doGet(url, null);
if (StringUtil.isNotBlank(result)) {
    String p = "flashvars=\"list(.*)";
    Pattern r = Pattern.compile(p);
    Matcher m = r.matcher(result);
    if (m.find()) {
        String resultUrl = m.group();
        resultUrl = resultUrl.substring(resultUrl.indexOf("flashvars=\"list=") + 16, resultUrl.lastIndexOf("\" />"));
        resultUrl = URLDecoder.decode(resultUrl, "UTF-8");

第二种视频的解析地址需要用到著名的硕鼠解析了。它是什么大家可以自行搜索。下面说解析方法:只需要打开硕鼠的网页的时候带上要解析的url就可以了,得到的就是一个网页:

这样就可以拿到真实地址了,那我们同样通过代码解析该网页就可以了。

String requestUrl = "http://www.flvcd.com/parse.php?kw=" + url;
String result = HttpUtils.doGet(requestUrl, null);
if (StringUtil.isNotBlank(result)) {
    Pattern p = Pattern.compile("<br>.*?<a href=\".*?\"");
    Matcher m = p.matcher(result);
    if (m.find()) {
        String res = m.group(0);
        int index = res.indexOf("=");
        res = res.substring(index + 2, res.length() - 1);

这样就可以拿到微博的视频真实url了。

如有侵权,请联系我删除。

打赏作者

《微博视频url解析》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注