使用 youtube-dl 下载多个文件

使用 youtube-dl 下载多个文件

我使用 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 下载多个文件

  1. 转到您的桌面并创建一个名为list(或任何其他名称)的文本文档。将要下载的文件的 URL 复制并粘贴到文件中,每行一个 URL。

  2. 打开终端并进入桌面

    cd ~/Desktop
    
  3. 要下载列表中的文件,请输入(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/481688https://askubuntu.com/a/334097/481688解决方案。我将其独立记录在这里,而不是将来再次滚动多个答案。

  • --batch-file=./list-of-youtube-videos-link.txt包含 YouTube 链接列表的文件
  • --format=mp4需要 mp4 格式输出
  • -c恢复部分下载的文件
  • -i忽略任何错误。
  • -t使用视频标题作为文件名。

相关内容