使用 youtube-dl 我可以做到
# Download YouTube playlist videos in separate directory indexed by video order in a playlist
$ youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s' https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re
上述脚本通过创建一个以播放列表名称命名的文件夹来下载播放列表,然后将各个视频下载到该文件夹中。
我也可以做
$ youtube-dl -citw --batch-file=downloads.txt
该脚本下载批处理文件中所有的视频网址列表,该文件可以包含播放列表以及单独的网址,并youtube-dl
下载当前目录中的所有视频。
我现在想将这两者结合起来。如果我有一个包含播放列表链接的文本文件。我想将所有这些播放列表下载到其自己的文件夹中,就像使用第一个命令一样。
我可以用 来做那件事youtube-dl
吗?
答案1
如果 downloads.txt 每行包含一个 url,请尝试:
cat downloads.txt | xargs -n1 youtube-dl -o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s'
答案2
万一未来的人偶然发现了这篇文章,我已经找到了一个适用于 Windows 的解决方案。但不知道其他操作系统是否适用。
在您的 中x:\Users\USERNAME\
,创建或编辑一个名为的文件youtube-dl.conf
并粘贴以下命令。这将始终在 youtube-dl 中运行,因此您不必在终端中输入它。有关更多信息有关配置文件的信息。
-o '%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s'
之后,创建一个包含以行分隔的播放列表链接的文本文件并运行它。
youtube-dl --batch-file=downloads.txt
youtube-dl.conf
下载后,如果您不需要,可以随意删除其中的命令。
答案3
适用于 Windows 和 Linux 的解决方案:
yt-dlp -o "%(playlist_title)s/%(title)s.%(ext)s" --batch-file=downloads.txt
这将为每个播放列表创建子文件夹,并以播放列表名称作为文件夹名称。非播放列表视频将下载到名为“NA”的文件夹中。
在此处阅读有关 youtube-dl 输出模板的更多信息: https://github.com/ytdl-org/youtube-dl/blob/master/README.md#output-template