用python下载视频代码_python实现视频下载

article/2025/11/8 5:01:42

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

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

代码架构

1240

目前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

监控

1240


http://chatgpt.dhexx.cn/article/ktdaKwaQ.shtml

相关文章

在电脑上如何直接下载秒拍的视频?

在生活中&#xff0c;我们想下载秒拍的视频&#xff0c;但是却找不到下载的标志&#xff1f;这该怎么办呢&#xff1f; 没有关系&#xff0c;不要着急&#xff0c;今天我就一步一步地教你下载 1.首先我们打开你想要下载的秒拍的视频的网页&#xff1a; 2.然后对于Chrome浏览器的…

php 秒拍视频解析,新浪微博视频解析源码_秒拍视频站外调用可自定义广告

这是一套非常不错的源码&#xff0c;这套源码一共只有100KB左右&#xff0c;你只需要将源码下载解压以后上传到支持php运行的服务器或者虚拟主机上&#xff0c;就可以直接使用了&#xff0c;使用方法很简单&#xff0c;将源码上传以后&#xff0c;直接通过&#xff1a;http://你…

php 秒拍视频解析,高仿秒拍视频网EMLOG主题模板

高仿秒拍视频网EMLOG主题模板&#xff0c;相似度非常高&#xff0c;EMLOG加上这款模板完全可以用来当做视频网站使用&#xff0c;这款模板可以插入秒拍网的视频&#xff0c;只需要输入秒拍网的视频ID就可以直接调用播放&#xff0c;并且支持直接调用MP4视频链接播放&#xff0c…

Terracotta设计原理分析

因为工作中历史产品采用了terracotta作为分布式缓存线性扩展平台&#xff0c;因此不得不提前对其原理做了相关了解&#xff0c;当然其中很多的设计思想和oracle、memcached的设计相似&#xff0c;但也有自己的亮点&#xff0c;那就是JVM的懒加载细粒度拷贝以及线性扩展&#xf…

Terracotta Java分布式任务调度平台 - Quartz

高效分布式Java任务调度平台 &#xff0d; Quartz Quartz是Java领域最著名的开源Java任务调度工具。它允许用户通过类似Unix上crontab类似的任务计划语法定义对Java任务的调度计划。 Terracotta于2009年末并购了Quartz项目&#xff0c;并将它与Terracotta核心平台进行紧密整合…

Terracotta设计原理

前言 业界有些大型应用都采用了terracotta作为分布式缓存线性扩展平台。terracotta的很多设计思想跟oracle、memcached的设计相似&#xff0c;但也有自己的亮点&#xff1a;那就是JVM的懒加载细粒度拷贝以及线性扩展&#xff0c;使得序列化对象消耗大大降低&#xff0c;提高CP…

terracotta_具有Spring Web Flow和Terracotta的Spring Web应用程序

terracotta 抽象 Spring Web Flow是Spring Framework Web应用程序堆栈的一个组件&#xff0c;它提供了一种编写有状态&#xff0c;会话式Web应用程序的简单方法。 通过允许您将Spring Web Flow定义为一个独立的模块&#xff0c;它可以独立于应用程序的其余部分进行配置和重用&…

使用Groovy快速分析Terracotta HealthCheck属性

使用tc-config.xml 配置Terracotta服务器时&#xff0c;要考虑的因素之一是在Terracotta服务器&#xff08;L2-L2&#xff09;之间&#xff0c;从客户端到服务器&#xff08;L1-L2&#xff09;以及从服务器到客户端&#xff08;L2-L1&#xff09;之间的运行状况检查属性的规范。…

EhCache 分布式缓存/缓存集群之Terracotta

介绍 分布式缓存使您可以利用水平扩展的其他好处&#xff0c;而不会损失本地堆上层提供的低延迟。 热点数据在本地缓存&#xff0c;热点数据在更快的层中 由一个应用程序实例缓存的数据可用于所有群集成员。 群集中有完整数据。 可以部署一台或多台镜像服务器来提供HA 要使…

Terracotta 集群

2019独角兽企业重金招聘Python工程师标准>>> 如何实现集群的。 测试代码编写 我们首先写一个demo&#xff0c;该demo在没有terracotta的环境下执行一次&#xff0c;看看结果 我们首先先写一个简单的多线程代码&#xff08;我们这个例子制定共享TerracottaDemo类的de…

Ehcache与terracotta集群配置

首先下载Ehcache&#xff0c;我下载的是ehcache-2.5.2&#xff0c;下载后解压文件&#xff0c;目录结构如下&#xff1a; 主要说明下terracotta这个目录&#xff0c;这个是terracotta服务器&#xff0c;里面有个bin目录&#xff0c;包含启动服务器和关闭服务的脚本&#xff0c;…

Terracotta 分布式缓存机制深入

Terracotta已收购Ehcache 数据缓存&#xff1a;&#xff08;无缝集成&#xff0c;代码注入方式&#xff0c;不需修改原代码&#xff09; Terracotta 功能&#xff08;JVM级POJO集群&#xff09;&#xff1a;DSO&#xff08;jvm本地线程加锁外&#xff0c;JVM集群上加排它锁&am…

分布式缓存之Ehcache与terracotta - Terracotta服务器概念篇

1、介绍 Terracotta服务器为Terracotta产品提供分布式数据平台。Terracotta服务器集群被称为Terracotta服务器阵列(TSA)。Terracotta服务器阵列可以从单个服务器&#xff0c;到一个用于高可用性(HA)的基本的双服务器串联&#xff0c;再到一个提供可配置的规模、高性能和深度故障…

IOCP与ASIO关系

笔记 IOCP&#xff1a;Input/Output Completion Port&#xff0c;Windows独有的内核对象&#xff0c;内核级完成IO的传输 &#xff0c;数据到来的时候自动把数据搬运到用户态的内存区&#xff0c;不需要拷贝文件描述符FileDescription&#xff08;fd&#xff09;到内核态查询状…

IOCP工作原理

文章来源&#xff1a;http://blog.csdn.net/zhongguoren666/article/details/7386592 本文主要探讨一下windows平台上的完成端口开发及其与之相关的几个重要的技术概念&#xff0c;这些概念都是与基于IOCP的开发密切相关的&#xff0c;对开发人员来讲&#xff0c;又不得不给予足…

Windows IOCP

Windows IOCP IOCP全称I/O Completion Port&#xff0c;中文译为I/O完成端口。IOCP是一个异步I/O的Windows API&#xff0c;它可以高效地将I/O事件通知给应用程序&#xff0c;类似于Linux中的Epoll。 简介 IOCP模型属于一种通讯模型&#xff0c;适用于Windows平台下高负载服务器…

IOCP小结

文章目录 一 什么是完成端口&#xff08;completion port&#xff09;对象二 使用IOCP的方法创建完成端口对象I/O服务线程和完成端口完成端口和重叠I/O 三 恰当地关闭IOCP四 IOCP大概的处理流程五 一个简单示例具体编程流程 当应用程序必须一次管理多个套接字时&#xff0c;完成…

IOCP高性能服务器的实现

应用场景说明&#xff1a;完成端口在面向现实应用的许多网络通信中应用很广泛&#xff0c;例如大型多人在线游戏&#xff0c;大型即时通信系统&#xff0c;网吧管理系统以及企业管理系统等具有大量并发用户请求的场合。 实现目标说明&#xff1a;通过完成端口模型构建一款服务…

IOCP 详解

IOCP 详解 网络上关于epoll的介绍资料多如牛毛&#xff0c;大多数已经讲解的非常细致。相比而言epoll只有三个接口调用&#xff0c;IOCP却有一堆的接口调用&#xff0c;更关键的是Windows的闭源性质&#xff0c;我们不知道调用之后Windows究竟做了哪些操作。众所周知IOCP是基于…

IOCP简介

1.1 环境要求本文读者需要熟悉C、TCP/IP、Socket编程、MFC&#xff0c;和多线程。源码使用Winsock 2.0和IOCP技术&#xff0c;要求&#xff1a;Windows NT/2000或以上&#xff1a;要求Windows NT3.5或以后版本Windows 95/98/ME&#xff1a;不支持Visual C.NET&#xff0c;或完整…