零、所用环境
macOS 10.14
Python 3.6
pip3 19.0.3 (Python 3.6)
celery 4.3.0
redis 3.2.1
you-get 0.4.1270
一、安装&升级相关库
1、安装celery,redis,you-get
pip3 install celery==4.3.0
pip3 install redis==3.2.1
pip3 install you-get==0.4.1270
备注:Mac下,可以brew install you-get
2、升级相关包
pip3 install --upgrade [包名]
如:pip3 install --upgrade you-get
二、you-get的使用
Github:https://github.com/soimort/you-get
1、查看视频所有可用的质量和格式(选择清晰度)
you-get -i [视频链接]
如:you-get -i 'https://www.bilibili.com/video/av50233794'
注:列表顶部那个是默认下载的
下载其他清晰度,通过you-get --format=dash-flv720 [视频链接]
如:you-get --format=dash-flv720 'https://www.bilibili.com/video/av50233794'
2、暂停并恢复下载
可以使用Ctrl + C来中断下载。
临时.download文件保存在输出目录中。下次you-get使用相同的参数运行时,下载进度将从上一个会话恢复。如果文件被完全下载(临时.download扩展已经消失),you-get将跳过下载。
要强制重新下载,请使用--force/ -f选项。(警告:这样做会覆盖任何具有相同名称的现有文件或临时文件!)
3、设置文件输出的路径和名称
a. 设置输出路径(使用--output-dir / -o选项)
you-get -o [路径] [视频链接]
you-get --output-dir [路径] [视频链接]
b. 设置输出名称(使用--output-filename / -O选项)
you-get -O [名称] [视频链接]
you-get --output-filename [名称] [视频链接]
c. 同时设置输出路径和名称
you-get -o [路径] -O [文件名] [视频链接]
注:重命名可以临时解决编码问题;可以指定文件下载到指定目录。
4、代理设置(通过--http-proxy / -x选项)
you-get -x IP:PORT [URL]
you-get --http-proxy 127.0.0.1:8087 [URL]
如you-get -x 127.0.0.1:8087 'https://www.bilibili.com/video/av50233794'
5、开启debug模式(通过--debug选项)
you-get [URL] --debug
开启debug模式后,可以非常详细的看到下载过程和完整报错信息。
如you-get 'https://www.bilibili.com/video/av50233794' --debug
6、下载视频列表(通过 --playlist)
如 you-get --playlist 'https://www.bilibili.com/video/av49691072?from=search&seid=12570988140525127631'
则按顺序一个个下载视频(下载完一集,自动下载下一集)
7、支持下载的视频网站
亲测哔哩哔哩,腾讯视频,优酷ok(更多见官网介绍👇)
8、更多
如观看视频,加载cookie等
详见Github:https://github.com/soimort/you-get
二、Celery (redis) 的使用等
1、启动celery服务
在tasks所在目录(一般放在项目根目录)输入
celery -A tasks worker --loglevel=info
注:loglevel可以是debug 、info 、warning 、error 、critical。
2、关闭celery作业
celery -A tasks purge
yes
3、杀死未关闭的celery进程(可选)
ps aux | grep celery
kill -9 进程号1 进程号2……
4、Python celery脚本
"""tasks.py
from celery import Celery
import os
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def download(file_path=None, url=None):
os.system("you-get -o ./%s '%s'" % (file_path, url,))
"""
注:通过python的os模块在python脚本中执行linux命令(亦可通过其他模块/方法,测试的代码保存在temp.py中,后面删除了temp.py后,在之前的版本也找不到了,倒是发现了gitee对于代码的保护)。
"""test.py
from tasks import download
def my_test():
download.delay(file_path=?, url=?)
"""