shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Script para youtube-dl e ffmpeg


From: Valtoir
Subject: Re: [shell-script] Script para youtube-dl e ffmpeg
Date: Fri, 23 Dec 2011 10:07:18 -0200

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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]