Trata-se de um shell script para rodar o comando normalize-audio em arquivos de áudio do tipo mp3. O pacote normalize-audio roda em Ubuntu mas não em Fedora (não sei se há outro nome ou outro pacote similar) e você pode instalar com sudo apt-get install normalize-audio.
Já aviso que fiz o script correndo e que sou iniciante então há alguns problemas de lógica. Essas falhas não impedem o correto funcionamento do programa mas você vai perceber que falta um ou outro laço para evitar ter que iniciar o programa novamente. Apesar disso, atinge o objetivo que é agilizar a ação em muitos arquivos (no meu caso eram quase 3000 arquivos que eu teria que fazer um a um).
Lembrando que Música é o diretório onde estão os meus arquivos, se for necessário, basta alterar antes de executar o script. Veja que ele não faz distinção de usuários, ou seja, você pode rodar em qualquer perfil que vai funcionar do mesmo jeito.
Espero que quem tem mais conhecimento que eu, se tiver disponibilidade e boa vontade, que contribua com esse código. Vai servir para me ajudar a aprender mais sobre o assunto e, desde já, agradeço.
#!/bin/bash
clear
echo “SCRIPT PARA NORMALIZAR VOLUME DE ARQUIVOS DE ÁUDIO!”
cd /home/$USER/Música
if [ -e /home/$USER/Música ]
then
ls -l |less
echo -n “Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): “
read d1
cd $d1*
pwd
echo -n “Lista de diretórios disponíveis.”
ls -l
echo -n “Quer normalizar um arquivo (digite 1), normalizar vários (digite 2) ou acessar um diretório (digite 3)? Código: “
read d2
if [ $d2 = 1 ]
then
echo -n “Informe nome da faixa que quer normalizar (digite somente a primeira palavra e clique Enter): “
read d3
normalize-audio $d3*
else
if [ $d2 = 2 ]
then
normalize-audio *.mp3
else
if [ $d2 = 3 ]
then
echo -n “Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): “
read d4
cd $d4*
ls -l
echo -n “Quer normalizar um arquivo (digite 1), normalizar vários (digite 2) ou acessar um diretório (digite 3)? Código: “
read d5
if [ $d5 = 1 ]
then
echo -n “Informe nome da faixa que quer normalizar (digite somente a primeira palavra e clique Enter): “
read d3
normalize-audio $d3*
else
if [ $d5 = 2 ]
then
normalize-audio *.mp3
else
if [ $d5 = 3 ]
then
ls -l
echo -n “Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): “
read d4
cd $d4*
ls -l
echo -n “Digite 2 para normalizar todos os mp3 desta pasta: “
read d6
if [ $d6 == 2 ]
then
normalize-audio *.mp3
fi
fi
fi
fi
fi
fi
fi
fi
[1] Comentário enviado por himfea em 03/01/2012 - 08:34h
no Fedora o pacote se chama somente "normalize" e e o comando de shell é "normalize-mp3"....nunca usei esse pacote, farei uns testes para comparar a diferença =]
tenho algumas idéias de como tu poderias otimizar esse script:
- utilizar o find com a opção exec, assim não precisa necessariamente indicar sempre um diretório, exemplo eu que tenho 100GB de MP3, heheeeh
- utilizar o case ao invés de muitos ifs, heheheeh
se eu efetuar alguma modificação no script lhe envio para verificar =]
abraços
[2] Comentário enviado por facb69 em 04/01/2012 - 16:57h
himfea.
Realmente, a opção do case parece uma boa assim com o find. Deste, não conheço o uso com exec, tentarei algo com isso.
Quanto ao Fedora, baixei aqui mas o comando ficou como normalize mesmo, com normalize-mp3, deu erro "Can't exec "": No such file or directory at /usr/bin/normalize-mp3 line 741. Error decoding, stopped at /usr/bin/normalize-mp3 line 746.".
Valeu as dicas e a atenção.
[4] Comentário enviado por mbrunoac em 22/01/2015 - 21:40h
Kra da uma olhada nessa adaptação do seu script que eu fiz, NÂO TESTEI
#!/bin/bash
function identifica_Distro(){
DISTRO=$(cat /etc/issue | awk -e '{if(NR == 1) print $1 }')
case $DISTRO in
"Fedora") echo "Sua Distribuição é Fedora, script para fedora ainda em construção"
exit ;;
"Ubuntu") Menu ;;
esac
}
function Menu(){
clear
echo "SCRIPT PARA NORMALIZAR VOLUME DE ARQUIVOS DE ÁUDIO!"
cd /home/$USER/Música
dir=$(pwd)
echo "Diretório pré-selecionado " $dir
ls -l | awk '{print $9}'
echo -n "Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): "
read d
cd $d*
pwd
echo -n "Lista de diretórios disponíveis. "
ls -l | awk '{print $9}'
Opcoes
}
function Opcoes(){
while true; do
echo "Normalizar um arquivo (Digite 1)"
echo "Normalizar Todos (Digite 2)"
echo "Acessar um diretório (Digite 3)"
echo "Sair (Digite 0): Opção?"
read opt
case $opt in
1) Normaliza $opt ;;
2) Todos ;;
3) echo -n "Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): "
read d4
cd $d4*
ls -l | awk '{print $9}' ;;
0) break ;;
esac
done
}
function Normaliza(){
case $opt in
1) ls -l | awk '{print $9}'
echo -n "Informe nome da faixa que quer normalizar (digite somente a primeira palavra e clique Enter): "
read faixa
normalize-audio $faixa*
;;
2) normalize-audio *.mp3 ;;
3) echo -n "Informe o diretório que quer acessar (digite somente a primeira palavra e clique Enter): "
read d
cd $d*
pwd
echo -n "Lista de diretórios disponíveis."
ls -l | awk '{print $9}'
Opcoes ;;
0) break ;;
esac
}