最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容。如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站上,增加自己的人气,岂不美哉?

parker就是这样一个项目(项目地址:https://github.com/LiuRoy/parker),它采用celery框架定时爬取用户视频列表,将最新发布的视频通过you-get异步下载,可以很方便地实现分布式部署。因为各个网站的页面布局和接口更新比较频繁,为了保证程序的高可用,特意增加了Statsd监控,方便及时发现出错。

代码架构

目前parker中只实现了B站和秒拍的下载,从框架图可以看出,针对每一类网站,需要实现两个异步接口:从用户视频主页解析发布视频的播放地址、根据播放地址下载视频。因此增加网站类型,不需要修改原来的代码,只需要添加新的解析和下载接口即可。针对视频下载完成之后的后续操作,我还没有实现,大家可以根据自己的需求自由的去实现。

在运行的时候,celery会将配置好的优质用户列表定时发送到对应网站的解析接口异步执行,筛选出最新发布的视频播放地址,交给对应的下载接口异步下载,下载完成之后再异步调用后续操作。因此需要启动一个celery beat进程发送定时任务,以及若干celery异步任务去执行解析和下载操作,对于比较大的视频,下载会相当耗时,建议根据任务列表的多少合理分配异步任务的个数。

程序运行

经验证,此程序可以在ubuntu和mac下正常运行, 由于本地windows下的celery无法正常启动,所以没有在windows环境做过验证。

依赖库安装

python版本为3.5,进入项目目录后,执行:

pip install -r requirements.txt

创建数据库表

参数配置

config路径下的logging.yaml、params.yaml、sites.yaml分别对应日志配置、运行参数配置、热门用户配置。

日志配置

debug模式下日志会直接输出在标准输出流,release模式下会将日志内容输出到文件中,因此需要配置输出日志文件。

运行配置

mode debug调试模式,此模式下日志指向标准输出,并且没有监控数据;release模式下,日志输出到制定文件,并且有监控数据。

broker_url 对应于celery的BROKER_URL,可以配置为redis或者rabbitmq

mysql_url 数据库地址,需要提前建好两张表

download_path 视频下载路径

statsd_address 监控地址

video_number_per_page 每次从用户视频主页解析出多少条视频播放地址,因为大部分用户每次发布的视频个数很少,只需要设置成一个很小的值即可。在初次运行的时候,也不会下载大量久远的视频。

download_timeout 视频下载的超时时间

热门用户配置

parker会根据此配置生成一份celery beat scheduler列表。

name 规则是<网站类型>-<任务id>,parker会根据此作为scheduler任务名称

url 用户的发布视频主页

task 对应的celery解析异步任务

minute 多少分钟检查一次用户视频列表

启动任务

进入项目目录,执行下面命令启动celery worker

celery -A spider worker

执行下面命令启动celery beat定时任务

celery -A spider beat

监控

用python下载视频代码_python实现视频下载相关推荐

  1. python3爬取视频代码_Python爬虫视频以及使用python3爬取的实例

    链接: https://pan.baidu.com/s/18iRD2I9t4xHxiSqoe-hFHg 密码: afaf 使用Python3爬取小说,代码看起来有点乱,下面有截图 import req ...

  2. python 背景音乐程序代码_python 喜马拉雅 音乐下载 演示代码

    1.主程序文件import os import json import requests from contextlib import closing from progressbar import ...

  3. python播放视频代码_python实现实时视频流播放代码实例

    这篇文章主要介绍了python实现实时视频流播放代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 @action(methods=['GET' ...

  4. python 下载视频文件_python 实现视频流下载保存MP4的方法

    如下所示: # -*- coding:utf-8 -*- import sys import os from glob import glob import requests reload(sys) ...

  5. python取消注释代码_python去除注释

    UliPad常用技巧小贴士 UliPad常用技巧小贴士 Python学了也一段时间了,拥有一款顺手的IDE工具也是写程序必备的.我发现很多人都在用sublime,用起来确实也不错,不过发现了一款国产的 ...

  6. 用python画路飞代码_python 全栈开发,Day105(路飞其他数据库表结构,立即结算需求)...

    考试第三部分:Django 16.  列列举你熟悉的Http协议头以及作用.(1分) Accept-Charset: 用于告诉浏览器,客户机采用的编码 Host: 客户机通过这个头告诉服务器,想访问的 ...

  7. python 三维地球代码_Python地图可视化三大秘密武器

    Python地图可视化库有大家熟知的pyecharts.plotly.folium,还有稍低调的bokeh.basemap.geopandas,也是地图可视化不可忽视的利器. 这次就来介绍下这三位低调 ...

  8. python实例豆瓣代码_Python制作豆瓣图片的爬虫实例代码

    Python制作豆瓣图片的爬虫 前段时间自学了一段时间的Python,想着浓一点项目来练练手.看着大佬们一说就是爬了100W+的数据就非常的羡慕,不过对于我这种初学者来说,也就爬一爬图片. 我相信很多 ...

  9. python五边形的代码_python正五边形代码

    python正五边形代码 第一步先找规律,抽象化问题.首先我们观察到,第一行为[1],我们直接赋给一个变量:初始化数列 p = [1].核心点是这个除去首位两个 [1] 的中间部分:[p[0] + p ...

  10. python阶乘的代码_python编码阶乘

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 需求:阶乘:也是数学里的一种术语: 阶乘指从1乘以2乘以3乘以4一直乘到所要求的 ...

最新文章

  1. [云炬创业学笔记]第二章决定成为创业者测试9
  2. ES6中解构赋值深入解读
  3. 查看SAP CRM和C4C的UI technical信息
  4. power of two java_LeetCode算法题-Power Of Two(Java实现)
  5. 【玩转Atlas200DK系列】为Atlas200DK配置wifi外挂模块
  6. java接口中有效的方法声明_在Java接口中,下列选顶中有效的方法声明是
  7. js 效果 大记事-横向-重播
  8. 17.敏捷项目管理流程实例 - 整体流程框架
  9. 手动Linux固定IP
  10. 图解通信原理与案例分析-16:2G GSM基站的工作原理--时分多址与无线资源管理RRM
  11. 解决chrome(谷歌)浏览器打开文件选择框响应速度慢的问题-小白实操记录
  12. frida 挂钩_您必须知道的预提交挂钩
  13. 在同一个数据集中同时更新多表..............
  14. AI实现的两种方案,暴力推演与因果率
  15. 客户成功团队的 OKR 案例
  16. s11 day103 luffy项目结算部分+认证+django-redis
  17. 使用KDevelop 怎么就那么难
  18. Python程序设计实战:输出古诗实战
  19. 浙江省杭州工程师职称申报方式
  20. day21-办公自动化:利用Python发邮件

热门文章

  1. panabit部署模式
  2. ARP协议格式和实例分析
  3. 09年国内外免费杀毒软件大收罗
  4. 关于/var/run/docker.sock
  5. Katana程序集列表
  6. 小蚁智能摄像机无法连接服务器,小米摄像头连接不上
  7. php网页微信登录验证失败,微信开发Token验证失败解决方法
  8. 文件服务器实现网络打印,图文详解 服务器共享打印设置
  9. Windows环境下搭建Redis集群
  10. Ubuntu /home下中文目录如何修改成英文