Retificando o e-mail anterior: que tal criar uma função só pra parte
"baixar, converter, etc", e passar a essa função a url, seja a partir de um
parâmetro ou da leitura do arquivo?
Quanto à validação de erros, coloque no início do script, uma vez só ;-)
T+
Valtoir
Em 23 de dezembro de 2011 10:07, Valtoir<address@hidden> escreveu:
Aqui o script funcionou, mas tenho algumas dicas:
- ao invés de esperar que a opção --file seja $1, use getopts. Com isso
podes eliminar também as variáveis ENT e FILE
- antes de enviar as mensagens de erro, rode um "setterm -store", e após a
exibição, "setterm -default". Não é educado deixar sujeira na tela do
usuário.
- utilize a opção "-e" do youtube-dl para salvar o arquivo final com o
mesmo nome do título do vídeo
Olhando agora, rapidamente, acho que a primeira dica (getopts) serve
inclusive pra evitar o uso de funções. Dá pra diminuir bastante o tamanho
do script.
T+
Valtoir
Em 23 de dezembro de 2011 08:29, Rodolpho Costa Stach<address@hidden>escreveu:
**
Bom dia à todos, estou tentando escrever um script para usar o
youtube-dl (que baixa vídeos do youtube para o PC) e o ffmpeg (que uso
para extrair uma mp3 do vídeo) mas ao tentar usar o while para ler um
arquivo linha a linha ele le apenas uma linha e sai... rsrsr provável
ser uma coisa bem simples que deixei passar mas já cheguei num ponto que
leio leio leio e não vejo...
## Script para baixar MP3 do youtube!
# Autor: Rodolpho
## Variáveis
# YOU é o caminho para o executável do youtube-dl
# FF é o caminho para o executável do ffmpeg
# ENT é a primeira entrada do usuário
# FILE é a segunda entrada do usuário (soh funciona quando tem a opcao
--file
## Funções
# baixalinha() é para quando o usuário informa a URL junto ao programa
# baixafile() é para ler um arquivo de texto simples com os links
##
#!/bin/bash
YOU=/usr/bin/youtube-dl
FF="/usr/bin/ffmpeg -i"
ENT=$1
FILE=$2
baixalinha(){
#Testa se não foi informado algum parâmetro para download
if [ -z "$ENT" ]; then
#exibe mensagem de erro
echo -e "\e[41;37;1m Erro:"
echo -e "\e[40;37;1mPreciso da URL do vídeo para a baixar"
echo -e "\e[40;37mUse $0 URL"
echo "Ex:"
echo -e "\e[40;37m $0 http://www.youtube.com/watch?v=J3WZ2b7V_7c"
echo -e "\e[40;37m ou"
echo -e "\e[40;37m $0 --file lista.txt"
echo " "
#exibe mensagem de erro e sai
exit
else
echo Baixando o vídeo
$YOU $ENT> /tmp/logYOU.log
VIDEO=`cat /tmp/logYOU.log|grep Destination|cut -d: -f2`
echo convertendo para MP3 com o nome $VIDEO.mp3
$FF $VIDEO $VIDEO.mp3
echo "Apagando o arquivo de vídeo"
rm $VIDEO
fi
}
baixafile(){
if [ -z "$FILE" ]; then
#exibe mensagem de erro
echo -e "\e[41;37;1m Erro:"
echo -e "\e[40;37;1mPreciso da URL do vídeo para a baixar"
echo -e "\e[40;37mUse $0 URL"
echo "Ex:"
echo -e "\e[40;37m $0 --file lista.txt"
echo " "
#exibe mensagem de erro e sai
exit
else
while read link
do
echo Baixando o vídeo de $link da lista $FILE
$YOU $link> /tmp/logYOU.log
VIDEO=`cat /tmp/logYOU.log|grep Destination|cut -d: -f2`
echo convertendo para MP3 com o nome $VIDEO.mp3 o video $link
$FF $VIDEO $VIDEO.mp3 2> .erroFF
echo "Apagando o arquivo de vídeo $VIDEO de $link"
rm $VIDEO
done< $FILE
fi
}
case $1 in
--file) baixafile;;
*) baixalinha
esac
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos