我使用 youtube-dl 从 YouTube 下载文件。我尝试下载多个文件,但效果不佳。每次我想下载视频时,我都必须打开多个终端并重新开始。
您能帮我通过一次性输入所有 URL 来在一个终端窗口中下载多个文件吗?我使用的是 Ubuntu 12.04 64 位。
答案1
快捷方式
如果所有视频都在同一个播放列表或同一个频道中,您可以使用以下快捷方式来节省时间。
播放列表
youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-playlist>
...其中<url-of-playlist>
被播放列表的 URL 替换,并替换FORMAT
为任何可用的视频格式,例如18
。您可以使用该-F
选项查看所有有效格式,如下所示:
youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'
下载从批次开始到批次结束的部分播放列表
youtube-dl -f FORMAT -ci --playlist-start NUMBER --playlist-end NUMBER <url-of-playlist>
...其中,<url-of-playlist>
由播放列表的 URL 替换,可替换FORMAT
为任何可用的视频格式,例如18
,并且NUMBER
是播放列表中开始/结束下载的视频编号。
渠道
youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>
...其中,<url-of-channel>
由频道的 URL 替换,并替换FORMAT
为任何可用的视频格式,例如18
。
不在同一播放列表或频道中的视频
首先创建一个批处理文件,该文件是一个文本文件,其中包含您要下载的 YouTube 视频的 URL 列表。这些 URL 应排列在一个列表中,每行只有一个 URL,没有其他内容,列表中的每个 URL 都有一个新行。使用一个容易记住的名称保存批处理文件,例如 batch-file.txt。如果多个文件都在 YouTube 中的同一个播放列表、频道或用户网页上,您可以通过运行以下命令生成一个文本文件,其中包含该页面上所有链接的列表:
sudo apt install jq
youtube-dl -j --flat-playlist "https://<yourYoutubeWebpage>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > batch-file.txt
从终端运行:
youtube-dl -ct --simulate --batch-file='/path/to/batch-file.txt'
这是基本命令,但是您还需要添加要下载的视频格式,否则您可能会发现自己下载的视频格式不是您想要的。因此,首先模拟下载,看看您想要的格式是否可用:
youtube-dl -ct -f 34 --simulate 'http://www.youtube.com/some-alphanumeric-string'
如果视频格式不可用,您将收到一条错误消息:requested format not available
。如果视频格式可用,则使用该选项时不会收到任何错误消息--simulate
。您还可以添加 -F 选项以查看所有有效格式,如下所示:
youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'
在第三条命令中,我使用了常见的 flv 360p 视频格式:
-f 34
。您可能更愿意使用尝试 flv 480p 视频格式-f 35
。因此,在将所需的视频格式添加到命令后,命令将变成如下形式:
youtube-dl -ciw -o "%(title)s.%(ext)s" --batch-file='/path/to/batch-file.txt'
笔记:
我没有--simulate
在最后一条命令中添加选项,所以这条命令会被真正执行。
答案2
你可以把 URL 一个接一个地放上去,中间留一个空格。Youtube-dl 会按顺序下载它们。这比制作批处理文件要简单一些。
注意 --help 说
youtube-dl --help Usage: youtube-dl [options] url [url...]
示例输入:
youtube-dl http://www.youtube.com/watch?v=fqULJBBEVQE http://www.youtube.com/watch?v=vDbbz-BdyYc http://www.youtube.com/watch?v=OrIFaWJ9Glo
示例输出:
[youtube] Setting language
[youtube] fqULJBBEVQE: Downloading video webpage
[youtube] fqULJBBEVQE: Downloading video info webpage
[youtube] fqULJBBEVQE: Extracting video information
[download] Destination: Web Components - A Tectonic Shift for Web Development - Google I_O 2013-fqULJBBEVQE.mp4
[download] 100% of 238.14MiB in 36:54
[youtube] vDbbz-BdyYc: Downloading video webpage
[youtube] vDbbz-BdyYc: Downloading video info webpage
[youtube] vDbbz-BdyYc: Extracting video information
[download] Paul Irish on Web Application Development Workflow-vDbbz-BdyYc.mp4 has already been downloaded
[youtube] OrIFaWJ9Glo: Downloading video webpage
[youtube] OrIFaWJ9Glo: Downloading video info webpage
[youtube] OrIFaWJ9Glo: Extracting video information
[download] Got server HTTP error. Retrying (attempt 1 of 20)...
[download] Destination: Single Page Web Applications - JavaScript End-to-End (The Hard Stuff)-OrIFaWJ9Glo.mp4
[download] 100% of 553.10MiB in 42:17
答案3
从 YouTube 下载多个文件
转到您的桌面并创建一个名为
list
(或任何其他名称)的文本文档。将要下载的文件的 URL 复制并粘贴到文件中,每行一个 URL。打开终端并进入桌面
cd ~/Desktop
要下载列表中的文件,请输入(
list
如果您将文件命名为其他名称,请进行相应替换)youtube-dl -a list
下载 YouTube播放列表
运行此命令
youtube-dl -citk -format mp4 -yes-playlist VIDEO_PLAYLIST_LINK
-c
恢复部分下载的文件-i
忽略任何错误。-t
使用视频标题作为文件名。-k
后期处理完成后将视频保存在磁盘上。--format mp4
将视频文件保存为 MP4 文件。--yes-playlist
确认后面的 URL 指向视频播放列表。
答案4
youtube-dl -cit --format=mp4 --batch-file=./list-of-youtube-videos-link.txt
对我来说有效的是结合https://askubuntu.com/a/947676/481688和https://askubuntu.com/a/334097/481688解决方案。我将其独立记录在这里,而不是将来再次滚动多个答案。
--batch-file=./list-of-youtube-videos-link.txt
包含 YouTube 链接列表的文件--format=mp4
需要 mp4 格式输出-c
恢复部分下载的文件-i
忽略任何错误。-t
使用视频标题作为文件名。