使用youtube-dl下载多个文件


45

我使用youtube-dl从YouTube下载文件。我尝试下载多个文件,但对我来说不起作用。每当我要下载视频时,我都必须打开多个终端并重新开始。

您能通过一次提及所有URL来帮助我在单个终端窗口中下载多个文件吗?我使用64位的Ubuntu 12.04。


1
不是您问题的答案,但其他人可能会对此绊倒。如果视频以某种方式相关,请记住youtube-dl可以从播放列表,用户或频道下载所有视频。
丹尼斯

请参阅下面的答案(不是当前最受欢迎的答案),建议仅在url和您之间添加一个空格。
gota

Answers:


54

捷径

如果所有视频都在同一播放列表或同一频道中,则可以使用以下快捷方式节省时间。

播放清单

youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-playlist>

...其中的<url-of-playlist>位置被播放列表的网址替换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>

... where <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在最后一个命令中添加该选项,因此该命令将真正执行。


18

您可以将网址一个接一个地放在网址之间。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

1
我认为最好的答案!很简单!
高塔

5

第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指向视频播放列表。

1
-citk会产生误导,并可能导致错误。-c强制恢复,即使没有太大意义。默认值已经继续。-i可能还可以,但请注意,您可能会错过某些视频的错误。-t已为默认值,已弃用。-k毫无意义-f mp4。有关更多详细信息,请参见youtube-dl常见问题解答
phihag

3

如果您有多个视频网址,只需创建一个新的或使用现有的一个,即可将它们添加到一个YouTube播放列表中。

然后使用下面的命令。

youtube-dl -f FORMAT --yes-playlist [url-of-playlist]

--yes-playlist如果URL指向视频和播放列表,则该选项将下载播放列表。

这是我找到的最简单,最快的选择,目的是要从一个网站上下载数百个视频,这些视频具有从YouTube链接的视频。


这对于从同一频道下载很多视频非常有用。您可以使用不公开的播放列表将其设为不公开
qwr

3

要下载多个视频,您可以使用此结构。它类似于@coreyb的响应,除了可以在bash的其他地方使用它(例如,与echo一起使用)。有两种方法:

大括号

youtube-dl -f FORMAT {url1,url2,url...}

重复执行没有最后一个参数的最后一个命令

youtube-dl -f FORMAT url1; !:- url2; !:-url...

3

最直接的解决方案是制作一个bash脚本,像这样

#!/bin/bash
terminal=`tty`
exec < ~/Documents/youtubevideolinks.txt

while read -r line
do
    cd ~/Desktop/TilakDa/
    youtube-dl -f 18 "$line"
done
exec < "$terminal"

只需将视频链接复制并粘贴到documents文件夹中该txt文件中,并在每个新行中插入每个视频网址,然后运行此脚本 ,它将一一下载视频 。默认情况下,该-f 18选项适用于360p视频


1

键入命令,然后键入&&并键入下一个命令,例如:

youtube-dl--add-metadata -xic http://(the url) && youtube-dl--add-metadata -xic http://(the url) 

1

尝试使用bash脚本:

while read LL ; do youtube-dl "$LL" ; done < your_file

1

主题仍然相关,因此:

  • 获取您的YouTube链接。
  • 从以下开始删除第一个视频参数 ?
  • 像这样使用:-)

    youtube-dl.exe --yes-playlist https://www.youtube.com/watch?list=yourlistlink
    

这对我有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.