web-dev-qa-db-fra.com

Comment passer un fichier contenant des requêtes à 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'

Je souhaite que le paramètre ytsearchall soit un fichier contenant les requêtes de recherche. c'est le python code que j'essaie.

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
Yaredh Yare

Je ne sais pas à propos de python, mais vous pouvez utiliser GNU parallel pour cela (Sudo apt install parallel; j'omets la plupart de vos options pour améliorer la clarté ici):

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

Par défaut, parallel exécute autant de travaux en parallèle que de cœurs de processeur, ce qui est normalement un bon choix. Si vous souhaitez définir le nombre de processus youtube-dl exécutés en parallèle, vous pouvez utiliser l'option -j, par exemple. -j2 pour deux processus.

Vous pouvez également utiliser une boucle while:

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

Les deux méthodes peuvent traiter la dernière ligne de votre fichier ne se terminant pas par un saut de ligne - parallelde par sa conception, la boucle à l'aide de la commande de test [.

3
dessert