我正在使用 Ubuntu 16.04 LTS。我想下载一些YouTubeyoutube-dl
视频。我是通过这个视频了解命令行工具的问题。正如 Yasser 所提到的,使用命令,
youtube-dl youtube.com/videolink --format mp4
我可以下载 mp4 格式的视频文件。
现在我想从不同的频道下载十个视频。我有一个文本文件,其中包含 YouTube 链接和我想要保存它们的名称。名称为文本文件的文本文件data.txt
如下所示:
http://youtube.com/link1 name1
http://youtube.com/link2 name2
http://youtube.com/link3 name3
......... ......
......... ......
http://youtube.com/link10 name10
现在我只想运行youtube-dl
一次命令,以便它自动从该文本文件中获取参数并使用所需的名称保存它们。
如果我只有中的链接data.txt
,即
http://youtube.com/link1
http://youtube.com/link2
http://youtube.com/link3
.........
.........
http://youtube.com/link10
我只能使用命令一次并附带选项来下载视频-a
,
youtube-dl --format mp4 -a data.txt
但我无法同时重命名它们。从man
页面youtube-dl
我发现有一个选项--output
可以设置文件名。
我怎能这样做?
答案1
如果您只是因为不喜欢命名文件的样式而重youtube-dl
命名文件,那么您可以使用--output
(或-o
)和模板来自定义从 Youtube 元数据中命名所有文件的方式。
例如,-o %(title)s.%(ext)s
将导致它从所有文件名中省略 Youtube ID。
有很多选项,可能取决于您的版本youtube-dl
,因此可以在终端上输入以下内容来找到完整的详细信息:
man youtube-dl
/OUTPUT
但是,如果您确实想单独命名每个文件,您可以youtube-dl
对文本文件中的每一行运行一次,如下所示:
(while read URL NAME; do [ "$URL" ] && youtube-dl --format mp4 -o "$NAME" "$URL"; done) < data.txt
对于每一行,在第一次运行一个或多个制表符和空格时将其拆分为 URL 和 NAME,然后如果该行不是空白,则将它们传递给youtube-dl
。如果该行只有一个 URL,则不会重命名该文件。
答案2
您的解决方案是使用config
文件。在 Linux 和 OS X 上,系统范围的配置文件位于,/etc/youtube-dl.conf
而用户范围的配置文件位于~/.config/youtube-dl/config
。请注意,默认情况下配置文件可能不存在,因此您可能需要自己创建。我的 中没有任何配置文件~/.config
,所以我不得不创建我的配置文件。在那里,您可以传递通常在 youtube-dl 中使用内联命令的任何参数。好用例是使用.netrc
文件进行身份验证,常见用途是输出格式。这是示例config
文件:
#Authentication with .netrc file
--netrc
# Save all videos in a directory named vimeo in your home directory
-o "~/Vimeo/%(title)s %(upload_date)s i%(id)s.%(ext)s"
# Download best format available via direct link over HTTP/HTTPS protocol
-f '(bestvideo+bestaudio/best)[protocol^=http]'
# Simple file name
--restrict-filenames
如果您想禁用特定 youtube-dl 运行的配置文件,可以使用--ignore-config
。本质上,就像您使用-a
switch 进行批量下载一样,您可以使用config
文件批量重命名下载,并根据需要进行大量其他自定义。所有内容都记录在youtube-dl 官方文档,特意阅读配置 &输出模板部分。