web-dev-qa-db-fra.com

Youtube-dl refuse de fonctionner en arrière-plan

Je lance youtube-dl en arrière-plan en plaçant & après la commande. Le problème est que cela ne me dérange pas que je le mette à l'arrière-plan et continue à imprimer des informations dans le terminal.

Non seulement refuse-t-il de s'arrêter Ctrl+C ou Ctrl+Z, cela ne fait rien d’autre que de montrer ces messages. Pour l'arrêter, je dois fermer le terminal.

Voici ce qui se passe exactement:

mohamed@Smithers:~$ clear
mohamed@Smithers:~$ youtube-dl https://www.youtube.com/watch?v=LMQsYSuw8hw &
[1] 2028
mohamed@Smithers:~$ [youtube] LMQsYSuw8hw: Downloading webpage
[youtube] LMQsYSuw8hw: Downloading video info webpage
[youtube] LMQsYSuw8hw: Extracting video information
[youtube] LMQsYSuw8hw: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Resuming download at byte 11440128
[download] Destination: I Was On Japanese TV... and I F#%KING HATED IT.-LMQsYSuw8hw.f137.mp4
[download]   4.8% of 231.85MiB at 199.01KiB/s ETA 18:56^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download]   4.8% of 231.85MiB at 136.95KiB/s ETA 27:30^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download]   5.0% of 231.85MiB at 127.41KiB/s ETA 29:31^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
mohamed@Smithers:~$ ^C
[download]   5.0% of 231.85MiB at 111.38KiB/s ETA 33:44^C
mohamed@Smithers:~$ ^C
[download]   5.0% of 231.85MiB at 111.21KiB/s ETA 33:47^C
mohamed@Smithers:~$ ^C
[download]   5.1% of 231.85MiB at 116.77KiB/s ETA 32:09^C

[download]   5.5% of 231.85MiB at 108.71KiB/s ETA 34:24^C

[download]   5.6% of 231.85MiB at 76.68KiB/s ETA 48:41
1
Mohamed Ashref

_youtube-dl_ fonctionne en arrière-plan, mais il envoie toujours une sortie à votre terminal et en produit une bonne partie pour vous informer de son évolution. Il y a plusieurs façons de changer cela, mais vous voudrez probablement soit faire en sorte que _youtube-dl_ produise moins de sorties , soit en provoquant sa sortie. être envoyé dans un fichier (ou tout simplement jeté) au lieu d'apparaître dans votre terminal.

Méthode 1: Exécutez _youtube-dl -q_ pour supprimer les messages d'état.

Si vous ne souhaitez pas voir les messages de progression, vous pouvez passer l'indicateur _-q_ (ou _--quiet_, qui fait la même chose) à la commande _youtube-dl_:

_youtube-dl -q https://www.youtube.com/watch?v=NZ-ElsvYKyo &
_

Vous devrez bien sûr remplacer cette URL par tout ce que vous essayez de télécharger. Certains messages peuvent toujours être imprimés, notamment des erreurs et des avertissements. Mais il est probable que vous souhaitiez les voir.

Si vous ne souhaitez pas que _youtube-dl_ produise des avertissements, vous pouvez exécuter _youtube-dl_ avec l'indicateur _--no-warnings_. Je ne suggère pas de faire cela, cependant, sauf si vous êtes sûr que c'est ce que vous voulez.

_youtube-dl -q --no-warnings https://www.youtube.com/watch?v=NZ-ElsvYKyo &
_

Pour en savoir plus sur les options de ligne de commande acceptées par _youtube-dl_, vous pouvez exécuter _man youtube-dl_ ou lire sa page de manuel en ligne .

Voie 2: Redirige la sortie standard de _youtube-dl_ dans un fichier.

Pour ajouter le résultat à _dl.log_ dans le répertoire actuel (vous pouvez le nommer comme vous le souhaitez et il sera créé s'il n'existe pas déjà), exécutez:

_youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &
_

Si vous voulez écraser _dl.log_ au lieu d'ajouter du texte à la fin, utilisez _>_ au lieu de _>>_:

_youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > dl.log &
_

La sortie normale sera alors redirigée vers _dl.log_ (ou le fichier que vous lui dites d’utiliser). La sortie d'erreur, cependant, sera toujours affichée sur votre terminal. Par exemple, lorsque j'ai exécuté cette commande, un avertissement a été imprimé sur mon terminal:

_ek@Io:~$ youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo >> dl.log &
[1] 14456
ek@Io:~$ WARNING: Requested formats are incompatible for merge and will be merged into mkv
_

Tout le reste est entré dans le fichier journal:

_ek@Io:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download]  23.2% of 359.52MiB at 204.49KiB/s ETA 23:02ek@Io:~$
_

Vous pouvez afficher la sortie avec cat (comme je l’ai déjà fait) à tout moment pour vérifier la progression.

Lorsque vous exécutez _youtube-dl_ sans _-q_, la sortie est principalement destinée à un terminal. Cette sortie comprend des caractères de contrôle qui indiquent à un terminal d’effacer le message de progression précédent, de sorte qu’il puisse être remplacé visuellement par le nouveau message de progression. Certaines méthodes d'affichage du fichier, telles que _cat dl.log_, ne montrent pas les messages "effacés" ni les caractères de contrôle. Cependant, ils font toujours partie du fichier et vous pouvez les visualiser avec d'autres utilitaires; par exemple, _view dl.log_ fonctionne.

Méthode 2a: redirigez la sortie vers _/dev/null_ pour vous en débarrasser.

Si vous souhaitez que la sortie soit simplement supprimée plutôt que sauvegardée dans un fichier réel, vous pouvez la rediriger vers /dev/null :

_youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo > /dev/null &
_

Avec _/dev/null_, peu importe si vous "écrasez" (_>_) ou "ajoutez" (_>>_).

C'est une technique pratique en général, bien que probablement inutile avec _youtube-dl_. Si vous souhaitez supprimer la progression, vous pouvez simplement exécuter _youtube-dl -q_ à la place.

Voie 3: Redirige l'erreur standard, aussi.

sortie normale et sortie d'erreur sont séparés. Il est courant que _youtube-dl_ produise les deux. La méthode ci-dessus n'a redirigé que la sortie standard. Vous pouvez également rediriger l'erreur standard. Vous pouvez faire beaucoup avec la redirection, y compris la redirection des deux flux de sortie vers des fichiers séparés. Pour les besoins de notre propos, je montrerai simplement comment envoyer à la fois la sortie standard et l'erreur standard dans le même fichier:

_youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &>> dl.log &
_

Quand j'ai couru ça, mon Shell a montré seulement

_[2] 15009
_

... et la sortie normale et la sortie d'erreur sont apparues dans _dl.log_:

_ek@Io:~$ cat dl.log
[youtube] NZ-ElsvYKyo: Downloading webpage
[youtube] NZ-ElsvYKyo: Downloading video info webpage
[youtube] NZ-ElsvYKyo: Extracting video information
[youtube] NZ-ElsvYKyo: Downloading MPD manifest
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] Destination: Lecture 1 _ Topics in String Theory-NZ-ElsvYKyo.f244.webm
[download]   0.0% of 359.52MiB at 107.65KiB/s ETA 56:59ek@Io:~$
_

L'exemple ci-dessus utilisait _&>>_, qui s'ajoute à _dl.log_. Pour écraser le fichier à la place, utilisez _&>_ (ou _>&_, qui fonctionne également) au lieu de _&>>_:

_youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> dl.log &
_

Voie 3a: Redirige les sorties normale et d'erreur vers _/dev/null_.

Si vous le souhaitez vraiment, vous pouvez rediriger à la fois la sortie standard et l’erreur standard vers _/dev/null_ afin que tout soit simplement supprimé:

_youtube-dl https://www.youtube.com/watch?v=NZ-ElsvYKyo &> /dev/null &
_

Vous voulez probablement voir les messages d'erreur réels, cependant. Si ce ne sont que des messages d'état et des avertissements que vous ne voulez pas, vous n'avez besoin d'aucune redirection. Dans ce cas, vous pouvez utiliser _youtube-dl -q --no-warnings_ comme décrit ci-dessus. (Voir la voie 1.)

5
Eliah Kagan