美文网首页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