如何将包含查询的文件传递给 youtube-dl?

如何将包含查询的文件传递给 youtube-dl?
youtube-dl "ytsearchall:" -x --audio-format "mp3" --min-views 20000 -i --audio-quality 1 --no-playlist --skip-unavailable-fragments --match-filter 'duration < 900'

我希望 ytsearchall 参数是一个包含搜索查询的文件。这是我正在尝试的 python 代码。

from __future__ import unicode_literals
import youtube_dl

f = open('b.txt', 'r')
for line in f:
    youtube-dl "ytsearchall:line" -x --audio-format "mp3" --min-views 20000 -i --audio-quality 1 --no-playlist --skip-unavailable-fragments --match-filter 'duration < 900'

答案1

我不知道python,但你可以使用GNUparallel为此(sudo apt install parallel;我省略了大多数选项以提高清晰度):

parallel youtube-dl "ytsearchall:{}" -ix :::: /path/to/b.txt

默认情况下,parallel并行运行的作业数量与 CPU 核心数量相同,这通常是一个不错的选择。如果您想设置youtube-dl并行运行的进程数,可以使用-j选项,例如-j2两个进程。

或者你也可以使用while循环:

while IFS='' read -r l || [ -n "$l" ]; do youtube-dl "ytsearchall:$l" -ix; done </path/to/b.txt

这两种方式都可以处理文件最后一行不以换行符结束的情况——parallel根据设计,在测试命令的帮助下进行循环[

相关内容