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
根据设计,在测试命令的帮助下进行循环[
。