美文网首页Python
Python处理腾讯视频

Python处理腾讯视频

作者: Donald_32e5 | 来源:发表于2019-03-04 14:12 被阅读0次

背景

  • 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>

相关文章

网友评论

    本文标题:Python处理腾讯视频

    本文链接:https://www.haomeiwen.com/subject/lzgcuqtx.html