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 相关文章推荐
python选择排序算法的实现代码
Nov 21 Python
win7安装python生成随机数代码分享
Dec 27 Python
Fiddler如何抓取手机APP数据包
Jan 22 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 Python
在Tensorflow中查看权重的实现
Jan 24 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
给Django Admin添加验证码和多次登录尝试限制的实现
Jul 26 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 Python
python 自动刷新网页的两种方法
Apr 20 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
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
机器学习的框架偏向于Python的13个原因
2017/12/07 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
python获取array中指定元素的示例
2019/11/26 Python
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
电气自动化求职信
2014/06/24 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
iPhone13再次曝光
2021/04/15 数码科技
Python图片检索之以图搜图
2021/05/31 Python