油管上有全球最大的视频资源库,由于一些限制我们不能随时随地看到,如果有机会看的时候,也能批量下载一些视频就非常 nice 了, youtube-dl 可以完美的实现这个需求
下载
pip
1 | $ sudo -H pip install --upgrade youtube-dl |
Linux
1 | $ sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl |
Mac
1 | $ brew install youtube-dl |
Windows
下载 youtube-dl.exe 文件直接运行即可。
这里有点需要注意,如果你是 Windows10 系统,很可能会报一个找不到 MSVCR100.dll
的错误,此时需要先安装 Microsoft Visual C++ 2010 Redistributable Package (x86),然后再次执行 youtube-dl.exe
即可
下载视频
1 | $ youtube-dl https://www.youtube.com/watch?v=OKIfTOEo7P0 |
下载视频就是这么简单,默认下载的是 720p 的视频,只要你有的话,我们也可以先看下视频都包含什么格式
1 | $ youtube-dl -F https://www.youtube.com/watch?v=OKIfTOEo7P0 |
也可以指定下载 1080p 的视频,使用第一列的数字可以精准下载
1 | $ youtube-dl -f 137 https://www.youtube.com/watch?v=OKIfTOEo7P0 |
有时候默认情况下会下载 webm 格式的视频,我们可以设置只下载 mp4 格式的视频
1 | $ youtube-dl -f mp4 https://www.youtube.com/watch?v=OKIfTOEo7P0 |
重命名
youtube-dl
下载的视频默认保存在当前目录,使用视频名+扩展名来保存,我们可以通过重命名的方式来修改下载目录和文件名,不过通常是在下载播放列表和频道全部视频时才需要。
是的,它还可以直接下载频道全部视频和播放列表,这样不需要写什么脚本也可以实现批量下载了
通过 -o
参数可以格式化下载的位置和名字
下载播放列表
1 | $ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLumqm-XDIBr1tduTDECpjF_l33IVupKAN |
下载的文件名格式化为 播放列表名称/视频位置 - 视频标题.扩展名
下载频道
1 | $ youtube-dl -o '%(uploader)s/%(title)s.%(ext)s' https://www.youtube.com/channel/UCahEYs3JbJQL-oyL_0H9pRA |
下载的文件名格式化为 上传者姓名/视频标题.扩展名
更多的格式化模板可以看文档
在下载列表时有一点需要注意,很多原因都会导致下载某个视频时失败,我们希望它可以在失败跳过继续下载,而不是直接停止,加上 -i
参数即可。
下载失败时跳过
1 | $ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLumqm-XDIBr1tduTDECpjF_l33IVupKAN |