Youtube-dl se recusa a rodar em segundo plano

1

Eu corro youtube-dl em segundo plano colocando & após o comando. O problema é que não me importa colocar em segundo plano e continuar imprimindo informações no terminal.

Não apenas se recusa a parar com Ctrl + C ou Ctrl + Z , simplesmente não Não faça nada além de mostrar essas mensagens. Para pará-lo, devo fechar o terminal.

Veja o que acontece exatamente:

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
    
por Mohamed Ashref 28.12.2016 / 20:34

1 resposta

5

youtube-dl está sendo executado em segundo plano, mas ainda está enviando saída para seu terminal e produzindo bastante para informar sobre seu progresso. Existem várias maneiras de mudar isso, mas você provavelmente quer fazer youtube-dl produzir menos saída, ou fazer com que sua saída seja enviada para um arquivo (ou descartada por completo) em vez de aparecendo no seu terminal.

Caminho 1: execute youtube-dl -q para suprimir mensagens de status.

Se você não quiser ver as mensagens de progresso, pode passar o -q flag (ou --quiet , que faz a mesma coisa) para o comando youtube-dl :

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

Você teria que substituir esse URL com o que estiver tentando baixar, é claro. Algumas mensagens ainda podem ser impressas, incluindo erros e avisos. Mas é provável que você queira ver isso.

Se você não quiser que youtube-dl produza nenhum aviso, poderá executar youtube-dl com o sinalizador --no-warnings . Eu não sugiro fazer isso, a menos que você tenha certeza de que é o que você quer.

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

Para saber mais sobre as opções de linha de comando aceitas por youtube-dl , você pode executar man youtube-dl ou leia a página de manual on-line .

Caminho 2: redireciona a saída padrão de youtube-dl para um arquivo.

Para anexar a saída a dl.log no diretório atual (você pode nomear o que quiser e ela será criada se ela ainda não existir), execute:

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

Se você quiser substituir dl.log em vez de anexar texto ao final, use > em vez de >> :

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

A saída normal será então redirecionada para dl.log (ou qualquer outro arquivo que você disser para usar). A saída de erro, no entanto, ainda será mostrada no seu terminal. Por exemplo, quando eu executei esse comando, recebi um aviso impresso no meu 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

Tudo o mais entrou no arquivo de 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
[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:~$

Você pode ver a saída com cat (como eu fiz acima) a qualquer momento, para verificar o progresso.

Quando você executa youtube-dl sem -q , ele produz a saída destinada principalmente a um terminal. Esta saída inclui caracteres de controle que informam ao terminal para apagar a mensagem de progresso anterior, para que possa ser visualmente substituída pela nova mensagem de progresso. Algumas formas de visualizar o arquivo, como cat dl.log , não mostrarão as mensagens "apagadas" ou os caracteres de controle. Eles ainda são parte do arquivo, e você pode visualizá-los com alguns outros utilitários; por exemplo, view dl.log funciona.

Caminho 2a: redireciona a saída para /dev/null para se livrar dela.

Se você deseja que a saída seja descartada em vez de ser salva em um arquivo real, é possível redirecioná-la para /dev/null :

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

Com /dev/null , não importa se você "sobrescreve" ( > ) ou "anexa" ( >> ).

Esta é uma técnica útil em geral, embora provavelmente desnecessária com youtube-dl . Se você quiser suprimir o progresso, basta executar youtube-dl -q .

Caminho 3: Redirecione o erro padrão também.

Produção regular e saída de erros é separada. É comum que youtube-dl produza ambos. O método acima redirecionou apenas a saída padrão. Você também pode redirecionar o erro padrão. Há muito o que fazer com o redirecionamento, incluindo o redirecionamento dos dois fluxos de saída para arquivos separados. Para nossos propósitos aqui, mostrarei como enviar a saída padrão e o erro padrão para o mesmo arquivo:

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

Quando eu corri isso, meu shell mostrou apenas

[2] 15009

... e a saída regular e a saída de erro apareceram em 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:~$

O exemplo acima usou &>> , que é anexado a dl.log . Para sobrescrever o arquivo, use &> (ou >& , que também funciona) em vez de &>> :

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

Caminho 3a: redireciona a saída normal e de erro para /dev/null .

Se você realmente quiser, pode redirecionar a saída padrão e o erro padrão para /dev/null , de modo que tudo seja descartado:

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

Você provavelmente quer ver mensagens de erro reais, no entanto. Se forem apenas mensagens de status e avisos que você não deseja, não será necessário redirecionamento. Nesse caso, você pode usar youtube-dl -q --no-warnings conforme descrito acima. (Veja o caminho 1.)

    
por Eliah Kagan 28.12.2016 / 21:33