python基于http下载视频或音频


Posted in Python onJune 20, 2018

一、简介

这里介绍使用python基于http下载视频或音频。

二、关键点

1、断点续传

视频或音频文件一般比较大,所以通过需要断点续传。方式通过在http的header里添加Range字段,指示接下来需要接收文件的位置。

2、判断结束

这里采用读取response的content-length字段,若当前报文长度小于前次报文长度,或者已接收文件等于当前报文长度,则可以认为视频接收完成。

三、示例代码

import os
import requests

def do_load_media(url, path):
  try:
    headers = {
      "User-Agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.3.2.1000 Chrome/30.0.1599.101 Safari/537.36"}
    pre_content_length = 0
    # 循环接收视频数据
    while True:
      # 若文件已经存在,则断点续传,设置接收来需接收数据的位置
      if os.path.exists(path):
        headers['Range'] = 'bytes=%d-' % os.path.getsize(path)
      res = requests.get(url, stream=True, headers=headers)

      content_length = int(res.headers['content-length'])
      # 若当前报文长度小于前次报文长度,或者已接收文件等于当前报文长度,则可以认为视频接收完成
      if content_length < pre_content_length or (
          os.path.exists(path) and os.path.getsize(path) == content_length):
        break
      pre_content_length = content_length

      # 写入收到的视频数据
      with open(path, 'ab') as file:
        file.write(res.content)
        file.flush()
        print('receive data,file size : %d  total size:%d' % (os.path.getsize(path), content_length))
  except Exception as e:
    print(e)


def load_media():
  url = 'http://k.youku.com/player/getFlvPath/sid/051446875256330ba12be_00/st/flv/fileid/030002080056EECA04F69A03BAF2B1BBADCA22-B1B9-E915-C03B-B0E7B0726C73?K=ae8e9a4d0f294dce282cef20&hd=0&myp=0&ts=377&ypp=0&ctype=30&ev=1&token=3759&oip=826403039&did=9e701e2baea8d466300184129d27d5d8&ep=AqAHzTJcifjAG0w8gO6bow3Mo5jVCyWrke5yFUQ5ZxOD3KGnS9WeSH2XvfdzTgOmgcPdl%2BVjzD29GUC%2BqeDjFxCFXBPHdIgGvhDtKk064s9iV0vxt4B0XNY39jlBH%2BCK'
  path = r'E:/test.mp4'
  do_load_media(url, path)
  pass


def main():
  load_media()
  pass


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
Python自动重试HTTP连接装饰器
Apr 28 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
Python的多维空数组赋值方法
Apr 13 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
详解Python字典小结
Oct 20 Python
python pyheatmap包绘制热力图
Nov 09 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
Python eval函数介绍及用法
Nov 09 Python
python实现下载pop3邮件保存到本地
Jun 19 #Python
python+POP3实现批量下载邮件附件
Jun 19 #Python
python实现批量解析邮件并下载附件
Jun 19 #Python
Python3使用SMTP发送带附件邮件
Jun 16 #Python
Python3使用turtle绘制超立方体图形示例
Jun 19 #Python
python3使用SMTP发送HTML格式邮件
Jun 19 #Python
python3.X 抓取火车票信息【修正版】
Jun 19 #Python
You might like
数字转英文
2006/12/06 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
document.getElementById介绍
2011/09/13 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
在Python的Django框架中包装视图函数
2015/07/20 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python合并同类型excel表格的方法
2018/04/01 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
python实现淘宝购物系统
2019/10/25 Python
Python实现直播推流效果
2019/11/26 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
python中图像通道分离与合并实例
2020/01/17 Python
Python OpenCV读取中文路径图像的方法
2020/07/02 Python
高考考python编程是真的吗
2020/07/20 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
人力资源部培训专员岗位职责
2014/01/02 职场文书
公司外出活动方案
2014/08/14 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书