1 votes

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 veux que le paramètre ytsearchall soit un fichier contenant des requêtes de recherche. Voici le code Python 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'

3voto

dessert Points 36815

Je ne sais pas pour Python, mais vous pourriez utiliser GNU parallel pour cela ( sudo apt install parallel ; j'omets ici la plupart de vos options pour plus de clarté) :

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

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

Vous pouvez également utiliser un while boucle :

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

Les deux méthodes permettent de faire face à la dernière ligne de votre fichier qui ne se termine pas par un saut de ligne. parallel par conception, la boucle avec l'aide de la commande de test [ .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X