使用youtube-dl下载多个文件

我使用youtube-dl从YouTube下载文件。 我试过下载多个文件,但它对我不起作用。 每次我想下载video时,我必须打开多个终端并重新开始。

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

快捷键

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

播放列表

youtube-dl -f FORMAT -ci  

…其中被替换为播放列表的URL,并将FORMAT替换为任何可用的video格式,例如18 。 您可以使用-F选项查看所有有效格式,如下所示:

 youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string' 

播放列表video开始和结束

 youtube-dl -f FORMAT -ci --playlist-start NUMBER --playlist-end NUMBER  

…其中被替换为播放列表的URL,将FORMAT替换为任何可用的video格式,例如18 ,而NUMBER是播放列表中开始/结束下载的video编号。

渠道

 youtube-dl -f FORMAT -citw -v  

…其中的URL替换,并将FORMAT替换为任何可用的video格式,例如18

video不在同一个播放列表或频道中

首先创建一个批处理文件,该文件是一个文本文件,其中包含您要下载的YouTubevideo的URL列表。 URL应排列在只有一个URL的列表中,每行上没有其他内容,列表中的每个URL都有一个新行。 使用易于记忆的名称保存批处理文件,如batch-file.txt。 如果多个文件都在YouTube的同一网页上,则可以通过运行以下命令生成一个文本文件,其中列表中包含该页面上的所有链接:

 lynx --dump -listonly "URL-of-YouTube-webpage" > batch-file.txt 

从终端运行:

 youtube-dl -ct --simulate --batch-file='/path/to/batch-file.txt' 

这是基本命令,但您还需要添加要下载的video格式,否则您可能会发现自己正在下载不需要的格式的video。 因此,首先模拟下载,看看您想要的格式是否可用:

 youtube-dl -ct -f 34 --simulate 'http://www.youtube.com/some-alphanumeric-string' 

如果video格式不可用,您将收到一条错误消息:所requested format not available 。 如果video格式可用,则在使用--simulate选项时不会收到任何错误消息。 您还可以添加-F选项以查看所有有效格式,如下所示:

 youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string' 

在第三个命令中,我使用了常见的flv 360pvideo格式:
-f 34 。 您可能更喜欢使用-f 35来尝试flv 480pvideo格式。 因此,在将所需的video格式添加到命令后,命令将变为如下所示:

 youtube-dl -cit -f 35 --batch-file='/path/to/batch-file.txt' 

笔记:

我没有在最后一个命令中添加--simulate选项,因此该命令将被执行为real。

你可以一个接一个地放置url,中间有一个空格。 Youtube-dl将按顺序下载它们。 这比制作批处理文件要简单一些。

请注意–help说youtube-dl --help Usage: youtube-dl [options] url [url...]

样本输入:

  corey in /media/Media/Videos$ 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 

如果您有多个videourl,只需在一个播放列表中将它们添加到您的YouTube播放列表中,方法是创建新的videourl或使用现有的videourl。

然后使用下面的命令。

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

如果URL指的是video和播放列表,则选项--yes-playlist将下载播放列表。

这是我发现的最简单,最快捷的选择,目的是从一个网站上下载数百个video,这些video包含从YouTube链接的video。

要下载多个video,您可以使用此结构。 它类似于@ coreyb的响应,你可以在bash的其他地方使用它,例如使用echo。 这有两种方式:

背带

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

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

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

最直接的解决方案是制作一个像这样的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" 

只需将文件夹中的txt文件中的video链接复制并粘贴到新行中的每个videourl并运行此脚本 ,它将逐个下载video默认情况下-f 18选项适用于360pvideo

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

第2步:打开终端并转到桌面

 cd Desktop 

第3步:下载列表中的文件,键入(如果您将文件命名为其他内容,则相应地替换list

 youtube-dl -a list 

下载YouTube 频道

运行此命令

 youtube-dl -citk –format mp4 –yes-playlist VIDEO_PLAYLIST_LINK 
  • -c恢复部分下载的文件
  • -i忽略任何错误。
  • -t使用video标题作为文件名。
  • -k在后处理完成后将video保留在磁盘上。
  • --format mp4将video文件保存为MP4文件。
  • --yes-playlist确认--yes-playlist的URL指向video播放列表。

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

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