4.下载字幕
对于国内的同学来说,有可能需要字幕,那么youtube-dl也支持字幕下载。
5.字幕选择和转换
对于国内大多数播放器来说,youtube下载的vtt字幕并不能正确加载,而如果能转换成srt字幕就完美了,youtube-dl自然也支持这种功能啦,还可以选择对应语言的字幕进行下载呢:
6.下载视频列表
如果你一个视频列表需要下载,youtube-dl也是支持的,用法没啥不同:
youtube-dl 会识别你的url是单个视频还是视频列表,并进行下载。
下载视频自定义文件名:
# 使用 -o 参数 $ youtube-dl -o "%(upload_date)s-%(title)s.%(ext)s" <url>上述命令指定下载的视频文件采用 上传日期 + 视频名称+视频扩展名 作为文件名。更多参数请看
组合上面所说的指定视频质量,下载字幕,转换字幕等命令在一起:
$ youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" --sub-lang en --convert-subs srt -o "%(upload_date)s-[%(title)s].%(ext)s" --write-sub https://www.youtube.com/watch?v=dfnCAmr569k这样下载下来的视频,就可以直接享用了
对了,本地下载需要你的代理开启全局模式。如果不想开启全局模式的话,需要在每一条命令后面加上代理设置:--proxy "https://127.0.0.1:1080"
嵌入youtube-dlyoutube-dl不但是一个很好的命令行工具,而且还支持嵌入代码使用,下面看一个简单的示例:
from __future__ import unicode_literals import youtube_dl class MyLogger(object): def debug(self, msg): print(msg) def warning(self, msg): print(msg) def error(self, msg): print(msg) def my_hook(d): if d['status'] == 'finished': print('Done downloading, now converting ...') ydl_opts = { 'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best', 'outtmpl':'%(upload_date)s-[%(title)s].%(ext)s', 'writeautomaticsub':True, 'subtitleslangs':'en', 'logger': MyLogger(), 'progress_hooks': [my_hook], } with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://www.youtube.com/watch?v=dfnCAmr569k'])