fazer o download de um arquivo uma vez e reproduzi-lo várias vezes

2

Eu quero reproduzir vídeos do youtube em um loop do meu terminal usando o mplayer, e para isso eu escrevi o seguinte código pegando peças aqui e ali:

#!/bin/bash

if [[ $(echo $*) ]]; then
    searchterm="$*"
else
    read -p "Enter the video ID: " searchterm
fi

searchterm=$(echo $searchterm | sed -e 's/\ /+/g')

video=$(youtube-dl -g https://youtube.com/v/$searchterm)

while true; 
do 
    mplayer $video
    sleep 2; 
done

Para reproduzir o vídeo, você precisa alimentar o ID do vídeo no script. Por exemplo, se este é o vídeo que você está assistindo: link Então o ID do vídeo é a parte depois de v= qual é daQhI1JFXn4

Tudo funciona bem, exceto que ainda baixa o vídeo toda vez que passa pelo loop. Eu estou querendo saber se há alguma maneira que isso poderia ser alterado para que ele baixe o arquivo apenas uma vez e jogue várias vezes.

    
por Keivan 05.10.2015 / 03:45

2 respostas

3

Eu achei avplay (você pode substituir com ffplay se preferir) funcionou melhor para isso, mas deixei como mplayer. tee -em um arquivo e tubulação para tocar pela primeira vez funciona. Eu adicionei um cheque para ver se ele foi baixado anteriormente.

#!/bin/bash

if [[ $(echo $*) ]]; then
    searchterm="$*"
else
    read -p "Enter the video ID: " searchterm
fi

searchterm=$(echo $searchterm | sed -e 's/\ /+/g')

video=$(youtube-dl -g https://youtube.com/v/$searchterm)

[[ -f $searchterm.mp4 ]] || wget -O - $video 2>/dev/null | tee $searchterm.mp4 | mplayer -

while true; 
do
    sleep 2;
    mplayer $searchterm.mp4
done
    
por 05.10.2015 / 04:26
1

Armazene a saída do YouTube-dl em um arquivo redirecionando. Em vez de salvar o comando em si na variável de vídeo.

    
por 05.10.2015 / 04:36