Python处理腾讯视频

背景

  • 1、从公众号获取视频,放到自己的app上展示

  • 2、后来发现其实简单的通过iframe标签就搞定

  • 3、我最先的想法是把视频转存,然后放到七牛上,这才有了处理腾讯视屏的坑

分析网站(业务没用上)

通过分析网站发现,视频都是一段段的请求的,然后组合起来,展示视频

  • 1、腾讯视频最重要的是先获取到视频的vid,之后通过一系列的拼接url获取数据

  • 2、 使用vid和'http://vv.video.qq.com/getinfo?vids=%s&platform=101001&charge=0&otype=json&defn=shd'拼接,并请求,获取视频的基本信息和key等关键信息

  • 3、解析json数据,拼接视屏下载url,url主要是以域名和vkey拼接而成

  • 4、拿到download_url 之后,使用urllibe.requet的方法,直接获取到目标url资源

-5、贴上源码,以备不测

from urllib import request
import json
import QiniuClient


def down(download_url, video_name):
    request.urlretrieve(download_url, filename=video_name, reporthook=report, data=None)


def report(a, b, c):
    """
    a:已经下载的数据块
    b:数据块的大小
    c:远程文件的大小
    """
    per = 100.0 * a * b / c
    if per > 100:
        per = 100
    print('%.2f%%' % per)



template_url = 'http://vv.video.qq.com/getinfo?vids=%s&platform=101001&charge=0&otype=json&defn=shd'


def tecent_parse(target_url):
    vid = target_url[len('https://v.qq.com/x/page/'):-5]
    response = request.urlopen(request.Request(template_url % vid)).read().decode('utf-8')
    json_data = response[len('QZOutputJson='):-1]
    json_obj = json.loads(json_data)
    download_url = json_obj['vl']['vi'][0]['ul']['ui'][0]['url'] + json_obj['vl']['vi'][0]['fn'] + '?vkey=' + \
                   json_obj['vl']['vi'][0]['fvkey']
    video_name = json_obj['vl']['vi'][0]['ti'] + "." + json_obj['fl']['fi'][1]['name']
    return download_url, video_name


if __name__ == '__main__':
    url = 'https://v.qq.com/x/page/k0815w0wxm9.html'
    if 'https://v.qq.com/x/page/' in url:
        down_url, vid_name = tecent_parse(url)
    else:
        print("it's not supported")
    down(down_url, vid_name)
    file_key = QiniuClient.upload_local_file(QiniuClient.QiniuClient.UPLOAD_VIDEO, vid_name)
    cover_link = QiniuClient.get_full_path(file_key)
    print(cover_link)

再记录下使用iframe的坑

  • 1、这是一个html的标签,能够造一个小框框出来,嵌入要播放的视频连接(根据我自己的用途)
  • 2、这个标签可以直接嵌入腾讯视频的播放页网址,会有封面,但是很坑的是,播放前会有广告,还是长广告,一分钟的那种,后来发现另一个解析之后的链接,是没有广告的
# 这个链接拼接上vid之后,会自适应iframe的宽高
https://v.qq.com/iframe/preview.html?auto=0&vid={}
  • 3 由于前端技术有限,百度了很久之后,才把这个框框的宽高弄刚刚好,贴一下简单的前段代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body style="text-align: center">
<br>
<p>{}</p>
<br>
<br>
<div>
    <iframe style="width: 100%; height: 550px" class="div" frameborder="1" src={} allowFullScreen="true"></iframe>
</div>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 来分享一波VIP视频解析接口,有的有广告,具体自己测试 接口地址(2017年12月) http://jx.vgoo...
    HolyTime阅读 68,103评论 0 17
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 3,569评论 1 41
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,455评论 4 61
  • 引言 知其所以然,是每个明智的开发者都希望掌握的,当然对于有些用一招鲜C-V大法者,相对不是很明智了。因为如果哪天...
    OzanShareing阅读 1,627评论 0 4
  • 引言 这几个月确实经历了一些跨度,由工业级的软件产品跃至互联网产品。 突然联想到一个情境,鱼儿海中游,大海是浩瀚的...
    OzanShareing阅读 12,071评论 1 5

友情链接更多精彩内容