如何在基本的 digitalocean 液滴上同时下载多个文件/视频?
假设我创建了一个运行 Ubuntu 的基本 digitalocean droplet/VPS
我启动控制台
我做apt install python
和wget https://youtube-dl.org/downloads/latest/youtube-dl
chmod 777 youtube-dl
我想下载一些文件,例如这两个视频文件
https://www.youtube.com/watch?v=iXFvkJLqPqo (约翰尼·德普一号,约11分钟长)
和
https://www.youtube.com/watch?v=-QwtKBC6iQY(瑞奇热尔韦)
我有两个视频的文件
user@basicdroplettest1:~# cat vidfilelist.txt
https://www.youtube.com/watch?v=iXFvkJLqPqo
https://www.youtube.com/watch?v=-QwtKBC6iQY
如果我做while read in; do ./youtube-dl "$in"; done < vidfilelist
它在文件的每一行上运行 youtube-dl,因此它会执行例如youtube-dl https://www.youtube.com/watch?v=iXFvkJLqPqo
然后youtube-dl https://www.youtube.com/watch?v=-QwtKBC6iQY
所以它下载第一个,然后当那个完成后,它开始下载第二个。
所以不是同时的
如果我在每行的末尾放一个 & 号
user@basicdroplettest1:~# cat ./vidfilelist.txt
https://www.youtube.com/watch?v=iXFvkJLqPqo &
https://www.youtube.com/watch?v=-QwtKBC6iQY &
然后做
(此 bash while 命令由https://stackoverflow.com/questions/13939038/how-do-you-run-a-command-eg-chmod-for-each-line-of-a-file提供 )
user@basicdroplettest1:~# while read in; do ./youtube-dl "$in"; done < vidfilelist.txt
[youtube] iXFvkJLqPqo: Downloading webpage
[download] Destination: Top Johnny Depp Comebacks & Reactions to Questioning While Testifying-iXFvkJLqPqo.mp4
[download] 2.5% of 20.67MiB at 50.65KiB/s ETA 06:47
[download] 3.0% of 20.67MiB at 50.90KiB/s ETA 06:43
[download] 3.2% of 20.67MiB at 50.95KiB/s ETA 06:41
[download] 5.5% of 20.67MiB at 51.04KiB/s ETA 06:31
见上文,我正在按 ENTER,但它不会进入后台并进入下一个..
所以这没有奏效。
有什么想法可以让它在后台下载文件中的每个视频文件吗?
(而不是下载一个,然后是另一个)。
您在正确的轨道上使用
&
,但您不希望将其作为文件名的一部分。你想运行这个:但是因为你
&
在文件中有,你实际上是在运行这个:此外,您可能希望重定向标准错误,以免您的终端受到进度报告的污染。尝试这个:
这对于 URL 列表应该没问题,但作为一般规则,在 shell 中解析文本文件时,您还需要清除输入字段分隔符
IFS=
并确保不展开\
-escape 序列,因此请执行以下操作:TLTR; 这个答案可能会帮助某人
在任何 bash shell 中,您都可以使用 youtube-dl
用于 Ubuntu 的 youtube-dl 安装
适当的回购
python 包(python 可编写脚本)(大部分已更新)
请记住: 大多数时候只有最新版本是有效的
下载一个链接视频(文件/播放列表/搜索)
下载多个文件
来自包含链接的文件
请参阅此问题的@terdon 答案以进行无声口译
从搜索链接或播放列表 中,您可以让 youtube-dl 将其下载为文件
或参考我过去的问题的答案以获得更结构化的下载 https://stackoverflow.com/a/67144906/9907243
除了特登的回答。
我会说
a) 使用 yt-dlp ,因为它比 youtube-dl 快得多。它是 youtube-dl 的一个分支。
b) 使用屏幕(屏幕命令)。因为否则当您断开会话时,ssh 会话,例如关闭窗口,然后下载停止!运行屏幕按 ENTER。有诸如 ctrl-a 、 ctrl-d 和命令 screen -r 之类的快捷方式,它们涵盖了从“屏幕”附加和分离,以及 screen -ls 以列出“屏幕”。有关于 screen 命令的 youtube 视频。它也可用于创建一种平铺视图,但您不需要该功能。
c) 如果您选择不同时下载它们,例如担心可能会被阻止,则可以向 yt-dlp 传递带有 URL 列表的文件名。并且可能有一个选项可以在每个命令之间暂停,或者您可以只拥有一个要运行的命令列表(例如 yt-dlp http://..../watch?v=adfsdf),在它们之间进行休眠。
d) 如果您有一个 youtube URL 列表,可能会有一些不同的文件格式,例如一个可能会以 .webm 的形式出现,如果由于某种原因文件没有正确下载,那么一个文件可能会以 .part 或类似的形式出现. 因此,使用 DIR 或 if *nix then ls 和 find 之类的命令,不仅可以查看下载的文件总数,还可以查看文件类型。