老高买使用搬瓦工有好久了,但是直到今天才想起来用命令行下载youtube的视频,实在是惭愧。赶紧加班写篇文章赎罪!
今天的主角在这儿youtube-dl
源代码点这儿rg3/youtube-dl
安装
pip install --upgrade youtube_dl
or
sudo curl https://yt-dl.org/downloads/2016.04.19/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
or
sudo wget https://yt-dl.org/downloads/2016.04.19/youtube-dl -O /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
mac下也有
brew install youtube-dl
安装好了以后,在命令行输入youtube-dl
,按回车,就能够看到其使用说明了!
使用
如上图所示,最简单的使用方法就是
# https://www.youtube.com/watch?v=nNGmruHS3r8 就是要下载的视屏的URL
youtube-dl https://www.youtube.com/watch?v=nNGmruHS3r8
➜ ~ youtube-dl https://www.youtube.com/watch\?v\=UECh7X07m6E
[youtube] UECh7X07m6E: Downloading webpage
[youtube] UECh7X07m6E: Downloading video info webpage
[youtube] UECh7X07m6E: Extracting video information
[youtube] UECh7X07m6E: Downloading MPD manifest
[download] Destination: Golang UK Conference 2015 - Andrew Gerrand - Stupid Gopher Tricks-UECh7X07m6E.mp4
[download] 91.8% of 352.87MiB at 20.07MiB/s ETA 00:01
仔细观察可以看到,老高的VPS可以达到每秒20M的下载速度,下载速度还算不错。
ps.下载好的文件名中可能包含空格,我们可以使用命令for f in *\ *; do mv "$f" "${f// /-}"; done
把文件名中的空格替换为-
号,以方便传输!
等下载完成以后我们可以使用bypy上传到百度网盘,或者用命令python -m SimpleHTTPServer 8080
搭建一个临时http服务器把文件离线回来!
下载方法
以运行python为例,进入下载好文件的目录中,然后执行之前提到的命令。
cd youtube/
python -m SimpleHTTPServer 8080
如果没有错误发生,现在访问你的IP:8080
就能看到文件列表了!
接下来的事情就太简单了,复制下载链接,然后添加到迅雷的下载列表里就可以把文件取回来了,不过因为是从美国那边下载,所以速度可能会慢一点。老高一般能达到500K/s.
动手能强的同学可以使用bypy,直接上传文件到百度网盘,不过百度网盘最近的限速也是让人很蛋疼,所以老高还是推荐http下载!
一些参数选项
应@Levi Zhang的需求,老高介绍一些比较常用的参数吧! 还有@Levi Zhang推荐的另一款命令行工具you-get也很厉害,他也是使用python语言写的,看来py真是写爬虫的利器!
youtube-dl -h
-r, 限制最大下载速度 (e.g. 50K or 4.2M)
--yes-playlist 当你的下载链接是一个列表时,下载他.
--playlist-reverse 倒序下载列表
--write-sub 下载自带字幕
--write-auto-sub 下载自动生成的字幕(YouTube only)
-x, --extract-audio 转换为音频,依赖 ffmpeg or avconv and ffprobe or avprobe
--restrict-filenames 墙裂建议带上,避免文件名里出现 "&" 和空格