Como passar um arquivo contendo consultas para o youtube-dl?

1
youtube-dl "ytsearchall:" -x --audio-format "mp3" --min-views 20000 -i --audio-quality 1 --no-playlist --skip-unavailable-fragments --match-filter 'duration < 900'

Eu quero que o parâmetro ytsearchall seja um arquivo contendo consultas de pesquisa. este é o código python que estou tentando.

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'
    
por Yaredh Yare 05.02.2018 / 04:55

1 resposta

3

Eu não sei sobre python, mas você pode usar GNU parallel para isso ( sudo apt install parallel ; Omito a maioria de suas opções para aumentar a clareza aqui):

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

Por padrão, parallel executa tantos trabalhos em paralelo quanto você tem núcleos de CPU, o que normalmente é uma boa escolha. Se você quiser definir o número de processos youtube-dl executados em paralelo, use a opção -j , por exemplo, -j2 para dois processos.

Como alternativa, você pode usar um loop while :

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

Ambas as maneiras podem lidar com a última linha do seu arquivo que não termina em um linebreak - parallel por design, o loop com a ajuda do comando de teste [ .

    
por dessert 05.02.2018 / 09:59