Como C0deDaedalus escreveu, wget -c
significa retomar o download de um arquivo parcialmente baixado, enviando o cabeçalho "Range". Como você está lidando com um fluxo de transmissão ao vivo na Internet, esse sinalizador não funcionará como pretendido. Na melhor das hipóteses, ele pode permitir que você continue anexando o fluxo no mesmo arquivo baixado, ignorando o fato de que você perdeu um pedaço quando o fluxo foi interrompido e, na melhor das hipóteses, o pedaço ausente não causará problemas para o seu MP3 player. / p>
Independentemente disso, você também parece ter um problema diferente: seu script precisa detectar quando o processo wget
termina muito cedo, para que ele possa até tentar retomar o download. Aqui está uma maneira de detectar se um processo terminou, usando o status de saída de kill -0
. Isso significa que você não pode simplesmente usar sleep 3600
, então você precisará de uma maneira diferente de terminar após 1 hora . Então você teria algo assim:
#!/usr/bin/bash
directory=/volume1/multimedia/Internet\ Radio\ Recordings/WRTI/$1/
endSeconds=$((SECONDS + 3600))
while [ $SECONDS -lt $endSeconds ]; do
fileName="WRTI-"$(date +"%m-%d-%Y-%H%M%S")
wget http://playerservices.streamtheworld.com/api/livestream-redirect/WRTI_JAZZ.mp3 -O "$directory$fileName.mp3" -q&
nWgetPID=$!
while kill -0 "$nWgetPID" >/dev/null 2>&1; do
if [ $SECONDS -gt $endSeconds ]
then
kill "$nWgetPID"
fi
sleep 1
done
done
echo "Done."
Como escrito, isso inicia um novo arquivo após cada interrupção. Você provavelmente também pode incorporar wget -c
para colocar tudo no mesmo arquivo, mas você não poderá diagnosticar facilmente quantas interrupções houve e quando elas aconteceram.