-
Notifications
You must be signed in to change notification settings - Fork 285
Home
-
基本结构
YoukuDownLoader 分为两个部分
-
library module
ykdl
:<PATH>/ykdl
-
scripts module
cykdl
:<PATH>/cykdl
,同时也是调用ykdl
的编程示例
-
-
本项目采用 Python 编写,兼容 Python 3.5 及以上版本,可通过包管理器或官网安装和更新
-
本项目的录制和合并功能依赖于 FFmpeg,请确保您已安装 FFmpeg 并将其添加到了系统环境变量的
path
中Windows 用户可访问以下链接获取最新稳定版
当前仅提供64位 https://www.gyan.dev/ffmpeg/builds/
当前仅提供64位 https://github.com/BtbN/FFmpeg-Builds/releases
提供64位与32位 https://github.com/AnimMouse/ffmpeg-stable-autobuild/releases -
本项目的播放功能是调用外部播放器实现的,最佳适配为 mpv
-
本项目依赖于如下 Python 库
-
基本功能
m3u8 (用于 m3u8 解析)
└─iso8601
jsengine (用于查找系统内可用的 JS 引擎,并用之运行 JS 脚本)
colorama (仅用于支持 Windows 系统控制台彩色打印输出,非 Windows 则忽略)
pycryptodome (加密相关)<暂时无用,移除以节约安装时间> -
扩展功能
[proxy]: ExtProxy (用于支持 HTTPS 和 SOCKS 代理)
[br]: BrotliCFFI (用于支持解压缩 Brotli 格式的 HTTP 响应)
[js]: quickjs (小巧可靠的 Javascript 引擎)
[net]: [proxy,br]
[all]: 以上所有
* 如果不安装直接使用源码,需要先自行安装好上述 Python 库 (扩展功能子依赖未列出),否则 ykdl 无法正常运行。
* 使用 pip 安装则会自动解决基本功能的依赖,扩展功能的依赖需在安装时指定, 项目参数和依赖参数之间不能有空格,依赖名称以逗号分割同样不能有空格pip3 install ykdl[all] <-- 包名 pip3 install <PATH>/ykdl.zip[net] <-- 压缩包 pip3 install <PATH>/ykdl[proxy,js] <-- 文件夹
-
-
Android 上的 Termux (以下内容在 Termux 0.117 下测试通过)
* pkg 安装时会安装相应依赖,依据当前版本可能会有不同变化
pkg install clang ffmpeg getconf python pip3 install quickjs <-- 这是 Python 绑定,也可以用 pkg 安装独立版本 termux-setup-storage <-- 开启内存读写权限
pkg 中的 mpv 只支持音频播放,如果需要视频播放功能推荐安装 mpv-android,然后配置 mpv 执行文件
curl -L -o /usr/bin/mpv https://gist.github.com/SeaHOH/ce761ad8f628f9150c64066da26a45c6/raw/7ec7591a75442523eeac65d0dfcae706bfef5868/mpv.py chmod +x /usr/bin/mpv <-- 配置运行权限
-
安装工具
-
本项目已经在 PyPI 上注册,强烈推荐使用 Python 官方包管理工具 pip 来安装本项目,大部分时候 Python 已经包含 pip,你可以通过以下命令来验证
python3 -m pip --version
-
如果 pip 尚未安装,请参照以下的方法安装
从网络安装,最新版本
curl https://bootstrap.pypa.io/get-pip.py | python3
wget https://bootstrap.pypa.io/get-pip.py -O - | python3 -
从当前安装版本中释放,固定版本
python3 -m ensurepip
-
如果 pip 不是最新版本,请使用以下命令更新
python3 -m pip install pip --upgrade python3 -m pip install setuptools --upgrade
* 此处只介绍使用 pip 的使用方法
* 通常非 Windows 用户需要添加--user
参数以安装到用户目录, 否则会安装到系统目录,这需要sudo
权限,以下安装升级同理 -
-
从 PyPI 安装发布版本
pip3 install ykdl
* 添加
--pre
参数可以安装预览版本。注意,这不等同于最新开发版本! -
从 GitHub 安装开发版本
-
直接使用 pip 下载
pip3 install https://github.com/SeaHOH/ykdl/archive/master.zip
-
使用 pip + git 下载
pip3 install git+https://github.com/SeaHOH/ykdl.git
-
使用 git 下载
git clone https://github.com/SeaHOH/ykdl.git pip3 install <PATH>/ykdl
-
使用任意工具下载 master.zip
pip3 install <PATH>/master.zip
-
* 扩展依赖的安装请参见上方扩展功能说明添加参数
-
从 PyPI 升级到最新发布版本
pip3 install ykdl --upgrade
* 添加
--pre
参数可以升级到预览版本。注意,这不等同于最新开发版本! -
从 GitHub 升级到最新开发版本
-
直接使用 pip 下载
pip3 install https://github.com/SeaHOH/ykdl/archive/master.zip --force-reinstall --no-deps pip3 install https://github.com/SeaHOH/ykdl/archive/master.zip --upgrade
-
使用 pip + git 下载
pip3 install git+https://github.com/SeaHOH/ykdl.git --force-reinstall --no-deps pip3 install git+https://github.com/SeaHOH/ykdl.git --upgrade
-
使用 git 下载,如之前未 clone 过,请参照安装说明替换第一行命令
cd <PATH>/ykdl && git pull pip3 install <PATH>/ykdl --force-reinstall --no-deps pip3 install <PATH>/ykdl --upgrade
-
使用任意工具下载 master.zip
pip3 install <PATH>/master.zip --force-reinstall --no-deps pip3 install <PATH>/master.zip --upgrade
-
* 扩展依赖的升级请参见上方扩展功能说明添加参数
-
library module 和 scripts module 都安装在
<PYTHON_LIBRARY_PATH>/site-packages
例如:/usr/lib/python3/site-packages/ykdl/ /usr/lib/python3/site-packages/cykdl/ ~/.local/lib/python3/site-packages/ykdl ~/.local/lib/python3/site-packages/cykdl C:\Python3*\Lib\site-packages\ykdl\ C:\Python3*\Lib\site-packages\cykdl\
-
可执行文件
通过 pip 或 setup.py 安装,Setuptools 会为
cykdl
生成可执行文件/usr/bin/ykdl ~/.local/bin/ykdl C:\Python3*\Scripts\ykdl.exe
-
在 shell 中执行
ykdl
或者python3 -m cykdl
-
系统代理
ykdl 默认使用当前系统代理,但优先读取以下环境变量作为代理
http_proxy https_proxy
系统代理和环境变量一般在系统配置中设置 (全局),环境变量也可以在 shell 中设置 (仅当前 shell 有效)
set http_proxy=HOST:PORT <-- set https_proxy=HOST:PORT <-- Windows export http_proxy=HOST:PORT <-- export https_proxy=HOST:PORT <-- Linux
* 系统代理一般仅支持 HTTP 代理,如需要使用 HTTPS 和 SOCKS 代理 (需安装扩展依赖 [proxy]) 可通过
--proxy
参数指定,不指定协议时默认 HTTP 代理 -
使用帮助
ykdl -h
usage: ykdl.py [-h] [-l] [-i] [-J] [-F FORMAT] [-o OUTPUT_DIR]
[-O OUTPUT_NAME] [-p PLAYER] [-k] [-c CERTS [CERTS ...]]
[--proxy [SCHEME://]HOST:PORT | system | none] [-t SECONDS]
[--fail-retry-eta SECONDS] [--no-fail-confirm] [--no-merge]
[--no-sub] [-s INDEX_NUM] [-j NUM] [--debug]
video_urls [video_urls ...]
YouKuDownLoader(ykdl 1.8.1), a video downloader. Forked from you-get
0.3.34@soimort
positional arguments:
video_urls video urls
要下载视频的网址,包含特殊符号时请用引号包裹
留空时进入交互模式
optional arguments:
-h, --help show this help message and exit
显示本帮助信息并退出
-l, --playlist Download as a playlist
将所给的视频 URL 作为播放列表进行下载
-i, --info Display the information of videos without downloading
只显示视频信息而不进行下载
-J, --json Display info in json format
以 json 格式显示视频信息
-a, --show-all Display all available video format before downloading
下载前显示所有可用的视频格式
-F FORMAT, --format FORMAT
Video format code, or resolution level 0, 1, ...
指定视频格式代码 (具体查看 -i 输出)或级别,默认最高清晰度
-o OUTPUT_DIR, --output-dir OUTPUT_DIR
Set the output directory for downloaded videos
指定下载视频的保存目录
-O OUTPUT_NAME, --output-name OUTPUT_NAME
Downloaded videos with the NAME you want
指定下载视频的文件名
-p PLAYER, --player PLAYER
Directly play the video with PLAYER like mpv
直接调用播放器而不是下载,推荐使用 mpv
支持完整路径和参数传递,使用时请用引号包裹
-k, --insecure Allow insecure server connections when using SSL
允许不安全的 SSL 连接
-c CERTS [CERTS ...], --append-certs CERTS [CERTS ...]
Append additional certs, used to verify SSL handshak,
note that video urls can't follow this argument
追加用于验证 SSL 握手的证书,支持多个参数因而
视频网址不能跟随在此参数后面,请用引号分别包裹,
此设置可用于内置下载,但不会传递给 FFmpeg 和播放器
--proxy [SCHEME://]HOST:PORT | system | none
Set proxy for http(s) transfer. default: use system
proxy settings
指定网络代理,默认使用系统代理设置,
HTTP 代理会传递给播放器,即设置播放器的系统代理环境变量
-t SECONDS, --timeout SECONDS
Set socket timeout, default 60s
设置网络传输超时时长,默认为 60 秒
--fail-retry-eta SECONDS
If the number is bigger than ETA, a fail downloading
will be auto retry, default 3600s, set 0 to void it
如果设置数值大于剩余完成时间则自动重试失败的下载,
默认 3600 秒,设置 0 则不重试
--no-fail-confirm Do not wait confirm when downloading failed, for run
as tasks (non-blocking)
重试失败的下载时无需等待人工确认,非阻塞,适合任务式调用
--no-merge Do not merge video slides
不合并视频分片
--no-sub Do not download subtitles
不下载字幕文件
--no-http-cache Do not allow HTTP cache
不使用 HTTP 缓存
-s INDEX_NUM, --start INDEX_NUM
Start from INDEX to play/download playlist,
default -1, index at media of current URL
配合 --playlist 使用,从指定的位置开始播放或下载列表,
默认值 -1,从当前网址对应的位置开始
-j NUM, --jobs NUM Number of jobs for multiprocess download
指定最多可同时下载的任务数量
--debug Print debug messages from ykdl
打印调试信息