1 youtube-dl概述
1.1 youtube-dl介绍
youtube-dl 是一款基于 Python 的小型命令行工具,允许从 YouTube、Dailymotion、Google Video、Photobucket、Facebook、Yahoo、Metacafe、Depositfiles、Bilibili 和类似网站下载视频。 它是用 pygtk 编写的,需要 Python 解释器来运行,它不受平台限制,可以在任何 GNU/Linux、Windows 或 macOS 系统上运行。
官网地址:https://ytdl-org.github.io/youtube-dl/index.html
github地址:https://github.com/ytdl-org/youtube-dl
1.2 youtube-dl安装
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
2 youtube-dl 命令参数
USAGE:
youtube-dl [OPTIONS] URL [URL...]
2.1 通用选项
-h, --help 打印帮助文档
--version 打印版本信息
-U, --update 更新到最新版(需要权限)
-i, --ignore-errors 遇到下载错误时跳过
--abort-on-error 遇到下载错误时终止
--dump-user-agent 显示当前使用的浏览器(User-agent)
--list-extractors 列出所有的提取器(支持的网站)
--extractor-descriptions 同上
--force-generic-extractor 强制使用通用提取器下载
--default-search PREFIX 使用此前缀补充不完整的URLs,例如:"ytsearch2 yt-dl" 从youtube搜索并下载两个关于yt-dl视频. 使用"auto"youtube-dl就会猜一个,一般效果等价于"ytsearch"("auto_warning"猜测时加入警告).我已知支持的PREFIX:ytsearch (youtube), ytsearchdate (youtube), yvsearch (yahoo videos), gvsearch (google videos)
--ignore-config 不读取配置文件,当时用了全局配置文件/etc/youtube-dl.conf:不再读取 ~/.config/youtube-dl/config (%APPDATA%/youtube-dl/config.txt on Windows)
--config-location PATH 使用指定路径下的配置文件
--flat-playlist 列出列表视频但不下载
--mark-watched 标记看过此视频 (YouTube only)
--no-mark-watched 不标记看过此视频 (YouTube only)
--no-color 打印到屏幕上的代码不带色
2.2 网络选项
--proxy URL 使用HTTP/HTTPS/SOCKS协议的代理.如:socks5://127.0.0.1:1080/.
--socket-timeout SECONDS 放弃连接前等待时间
--source-address IP 绑定的客户端IP地址
-4, --force-ipv4 所有连接通过IPv4
-6, --force-ipv6 所有连接通过IPv6
2.3 地理限制
--geo-verification-proxy URL 使用此代理地址测试一些有地理限制的地址
--geo-bypass 绕过地理限制通过伪装X-Forwarded-For HTTP头部的客户端ip (实验)
--no-geo-bypass 不 绕过地理限制通过伪装X-Forwarded-For HTTP头部的客户端ip (实验)
--geo-bypass-country CODE 强制绕过地理限制通过提供准确的ISO 3166-2标准的国别代码(实验) 注:以上三个实验参数实测未成功
2.4 视频选择
--playlist-start NUMBER 指定列表中开始下载的视频(默认为1)
--playlist-end NUMBER 指定列表中结束的视频(默认为last)
--playlist-items ITEM_SPEC 指定列表中要下载的视频项目编号.如:"--playlist-items 1,2,5,8"或"--playlist-items 1-3,7,10-13"
--match-title REGEX 下载标题匹配的视频(正则表达式或区分大小写的字符串)
--reject-title REGEX 跳过下载标题匹配的视频(正则表达式或区分大小写的字符串)
--max-downloads NUMBER 下载NUMBER个视频后停止
--min-filesize SIZE 不下载小于SIZE的视频(e.g. 50k or 44.6m)
--max-filesize SIZE 不下载大于SIZE的视频(e.g. 50k or 44.6m)
--date DATE 仅下载上传日期在指定日期的视频
--datebefore DATE 仅下载上传日期在指定日期或之前的视频 (i.e. inclusive)
--dateafter DATE 仅下载上传日期在指定日期或之后的视频 (i.e. inclusive)
--min-views COUNT 不下载观影数小于指定值的视频
--max-views COUNT 不下载观影数大于指定值的视频
--match-filter FILTER 通用视频过滤器. Specify any key (see help for -o for a list of available keys) to match if the key is present, !key to check if the key is not present, key > NUMBER (like "comment_count > 12", also works with >=, <, <=, !=, =) to compare against a number,key = ‘LITERAL‘ (like "uploader = ‘Mike Smith‘", also works with !=) to match against a string literal and & to require multiple matches. Values which are not known are excluded unless you put a question mark (?) after the operator. For example, to only match videos that have been liked more than 100 times and disliked less than 50 times (or the dislike functionality is not available at the given service), but who also have a description, use --match-filter "lik