当前位置: 首页>>技术教程>>正文


downloads – 使用youtube-dl下载多个文件

,

问题描述

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

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

最佳方法

Shortcuts

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

Playlist

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替换为任何可用的视频格式,例如18NUMBER是播放列表中开始/结束下载的视频编号。

Channel

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都有一个新行。用易于 memory 的名称(例如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。您可能更喜欢使用-f 35尝试flv 480p视频格式。因此,在将所需的视频格式添加到命令后,该命令将变成如下所示:

youtube-dl -ciw -o "%(title)s.%(ext)s" --batch-file='/path/to/batch-file.txt'

笔记:

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

次佳方法

您可以将网址一个接一个地放在网址之间。 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步:转到您的桌面,制作一个名为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使用视频标题作为文件名。

  • post-processing完成后,-k将视频保留在磁盘上。

  • --format mp4将视频文件另存为MP4文件。

  • --yes-playlist确认后面的URL指向视频播放列表。

第四种方法

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

然后使用下面的命令。

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

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

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

第五种方法

要下载多个视频,您可以使用此结构。它类似于@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"

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9770.html,未经允许,请勿转载。