mp3traduz

Publicado por Eduardo F. Filippo 05/12/2006

[ Hits: 7.704 ]

Download mp3traduz.tar.gz




O mp3traduz é um shell-script que recodifica o nome e/ou a id3v1 (informações da mp3) de uma mp3 ou de um diretório (e seus sub-diretórios se você assim desejar) cheio delas.

Este Script foi baseado na dica dada por Davidson Rodrigues Paulo para o www.vivaolinux.com. Para utilizá-lo extraia-o usando o comando (como root):

# tar -zxvf mp3traduz.tar.gz -C /usr/local/bin

Feito isso, como usuário normal, dê um "mp3traduz" e leia as instruções. O programa requer mp3info, dialog e iconv.

  



Esconder código-fonte

#!/bin/sh
#
# Script Criado Por Eduardo Fagundes Filippo(ed2ef),E Inspirado Na Dica Dada Pelo Davidson Rodrigues Paulo
# Ao www.vivaolinux.com.br na url:'http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7329'
# O Script Ficou Meio Grande e Pode Parecer Complicado, Mas A Ideia É Bem Simples..Oq Fez Ele Ficar Assim
# Foram Algumas Frescuras Que Eu Quiz Por Nele, E Tambem Meu Conhecimento Um Pouco Limitado De Sh...
# Em Caso De Bugs,Duvidas,Criticas, Mande Um Email Para [email protected] Ou Um Scrap Para O Orkut:
# 'http://www.orkut.com/Profile.aspx?uid=18406490453974940886'
# 

#----------------------------------------------------------------------------------------------------------|
# Apesar No Nome..hehehehe Aqui Ele Vai Checar Se Voce Tem Os Programas Necessarios...                     |
#----------------------------------------------------------------------------------------------------------|
checando()
{
echo "Agora Irei Procura Pelos Seguintes Programas:"
echo "1- dialog, Para Criar Uma Interface Grafica;"
echo "2- mp3info, Para Saber/Alterar As Id3v1;"
echo "3- iconv, Programa Que Faz A Recodificaçao!"
for I in `echo $PATH | sed 's/:/ /g'`;do
    if [ -e "$I/dialog" ];then
   dl=dialog
    fi
    if [ -e "$I/mp3info" ];then
   mi=mp3info
    fi
    if [ -e "$I/iconv" ];then
   ic=iconv
    fi
done
echo "Achei Os Seguintes Programas: $dl $mi $ic"
if [[ "$dl" == "dialog" && "$mi" == "mp3info" &&  "$ic" == "iconv" ]];then
   inicio
fi 
}
inicio()
{
if [ -e "$op1" ];then
   tipo=$(file -b "$op1" | sed 's/ .*//g')
   case $tipo in
      directory)cd "$op1";diretorio;;
      MP3)arq="$op1";mp3;;
      MPEG)arq="$op1";mp3;;
      -h)opcoes;;
      --help)opcoes;;
      --ajuda)opcoes;;
      *)echo "$op1: Arquivo Não é Uma Mp3 Ou Diretorio Invalido";;
   esac
elif [ "$op1" == "-A" ];then
   expert
else
   opcoes
fi
}
#----------------------------------------------------------------------------------------------------------|
# Caso Vc Digite apenas mp3traduz Ou Escreva Um Caminho Errado..Eh Aqui Q Vc Vai Parar..                   |
#----------------------------------------------------------------------------------------------------------|
opcoes()
{
mp3=$(echo mp3traduz)
echo ""
echo "Bem-Vindo Ao $mp3!Este Script Foi Feito Por Eduardo Fagunde Filippo(ed2ef),Baseado"
echo "Na Dica Dada Por Davidson Rodrigues Paulo Ao www.vivaolinux.com .Em Caso De Bugs,"
echo "Duvidas,Criticas,Sugestões Mande Um Email Para [email protected] Ou Um Scrap Para"
echo "O Orkut: 'http://www.orkut.com/Profile.aspx?uid=18406490453974940886'.O $mp3  Tem"
echo "Por Objetivo Ser Ultra-Simples e Automatico!Você Só Precisa Apontar A Mp3 Ou O Diretorio"
echo "A Ser Convertido.Feito Isso,Escolha A Codificação A Ser Usanda e Pronto!O Programa Se"
echo "Encarrega De Converter O(s) Nome(s) E Sua(s) Respectiva(s) Tags(Id3v1)!No Caso De Diretorio,"
echo "Seus Sub-Diretorios Tambêm Seram Convertidos!Para Opçoes Avançadas Digite: $mp3 -A"
echo ""
echo "Como Usar Este Programa?"
echo ""
echo "Para Converter Um Diretorio e Seus Sub-Diretorios:"
echo "$mp3 /home/usuario/mp3"
echo ""
echo "Ou"
echo ""
echo "Para Converter Somente UM ARQUIVO:"
echo "$mp3 /home/usuario/mp3/arquivo.mp3"
echo ""
}
#----------------------------------------------------------------------------------------------------------|
# Como Proprio Nome Diz..Aqui Vc Escolhe Como o mp3traduz Trabalha...Leia Atentamente As Descrições        |
#----------------------------------------------------------------------------------------------------------|
cod()
{
dialog --clear --stdout --yes-label "Aceitar" --no-label "Recusar" --title "AVISO" --yesno "Antes De Prosseguir, Irei Explicar Um Pouco Sobre As Codificações:

WINDOWS-1250 -> Codificação Padrão Usada SOMENTE No Windows, Ou Seja Em
Caso de Migração,E Caso Você Tenha 'Puxado' Arquivos Desta Partição
(Formata Em Vfat/NTFS/DOS),Eles Estaram  Codificados Em WINDOWS-1250;

ISO-8859-1 -> Codificação Padrão Para Idiomas Ocidentais(Brasileiro).Vem
Sendo Gradualmente Substituido Pelo UTF-8.Em Caso De Duvidas,digite 'locales'
Em Um Terminal, Se Aparecer pt_BR ou pt_BR.ISO-8859-1 ou coisa Parecida, Seu
Locale Esta Em Iso-8859-1;

UTF-8 -> A Nova Codificação Padrão!Dita Como Universal,Vem Para Acabar De Vez
Com Aqueles Caracteres Estranhos Que Aparecem Em Sites De Idiomas No Minimo
Excentricos!Para Saber Se Sua Codificação Padrão é Essa, Digite 'locales' Em
Um Terminal, Aparecendo Algo Como pt_BR.UTF-8 ou coisa parecida, Esta é a Sua
Codificação!

Caso Você Aceite E Tenha Entendido Tudo Isso,Clique Em Aceitar.Caso
Contrario Clique Em Recusar." 0 0
aviso=$?
if [ "$aviso" == "0" ];then
   cod=$(dialog --clear --stdout --title "Conversões Possiveis"\
 --radiolist "Escolha Uma Das Opções Abaixo" 0 0 0\
 1 "De: WINDOWS-1250 Para: ISO-8859-1" off\
 2 "De: WINDOWS-1250 Para: UTF-8" off\
 3 "De: ISO-8859-1 Para: UTF-8" off\
 4 "De: UTF-8 Para: ISO-8859-1" off\
 5 "Sair" on)
else
   exit
fi
case $cod in
   1)codin=WINDOWS-1250;codout=ISO-8859-1;;
   2)codin=WINDOWS-1250;codout=UTF-8;;
   3)codin=ISO-8859-1;codout=UTF-8;;
   4)codin=UTF-8;codout=ISO-8859-1;;
   5)exit;;
   *)exit;;
esac
if [[ "$codin" == "" && "$codout" == "" ]];then
    exit
fi
}
#----------------------------------------------------------------------------------------------------------|
# Procura Por Arquivos E Codifica Quando Necessario..So Vale Pra Pesquisa Por Diretorio                    |
#----------------------------------------------------------------------------------------------------------|
converter()
{
if [ "$novo" != "$arquivo" ] ; then
    echo "Movendo De :$arquivo / Para: $novo"
    mv "$arquivo" "$novo"
fi
}
#----------------------------------------------------------------------------------------------------------|
procura()
{
for arquivo in *; do
    novo="`echo $arquivo | iconv -f $codin -t $codout`"
    retval=$?
    if [ "$retval" == "0" ]; then
   converter
    else
   echo "$arquivo Ja Esta Codificado,Ou Você Escolheu Uma Codificação Errada"
   echo "Por Via Das Duvidas Este Arquivo Não Será Renomeado"
    fi
done
}
#----------------------------------------------------------------------------------------------------------|
# Analisa As Id3v1 Caso Seje Selecionado Conversão Por Diretorio...                                        |
#----------------------------------------------------------------------------------------------------------|
info()
{
for info in *;do
    tipo=$(file -b "$info" | sed 's/ .*//g')
    if [ "$tipo" == "MP3" -o "$tipo" == "MPEG" ];then
   autor=$(mp3info "$info" -p %a)
   musica=$(mp3info "$info" -p %t)
   if [[ "$autor" != "" && "$musica" != "" ]];then
       na="`echo "$autor" | iconv -f $codin -t $codout`"
       retval=$?
       if [ "$retval" == "0" ];then
      echo "Convertendo Autor De: $autor Para: $na"
      mp3info -a "$na" "$info"
       else
      echo "$autor Ja Esta Codificado, Ou Você Escolheu Uma Codificação Errada"
      echo "Por Via Das Duvidas Esta Tag Não Será Renomeada!"
       fi
       nm="`echo "$musica" | iconv -f $codin -t $codout`"
       retval=$?
       if [ "$retval" == "0" ];then
      echo "Convertendo Titulo De: $musica Para: $nm"
      mp3info -t "$nm" "$info"
       else
      echo "$musica Ja Esta Codificado, Ou Você Escolheu Uma Codificação Errada"
      echo "Por Via Das Duvidas Esta Tag Não Será Renomeada!"
       fi
   fi
    else
   if [[ "$tipo" == "directory" && "$sd" != "0" ]];then
       cd "$info"
            echo "$PWD"
       for A in *;do
      tipo=$(file -b "$A" | sed 's/ .*//g')
      if [ "$tipo" == "MP3" -o "$tipo" == "MPEG" ];then
          autor=$(mp3info "$A" -p %a)
          musica=$(mp3info "$A" -p %t)
          if [[ "$autor" != "" && "$musica" != "" ]];then
         na="`echo "$autor" | iconv -f $codin -t $codout`"
             retval=$?
         if [ "$retval" == "0" ];then
             echo "Convertendo Autor De: $autor Para: $na"
             mp3info -a "$na" "$A"
         else
             echo "$autor Ja Esta Codificado, Ou Você Escolheu Uma Codificação Errada"
             echo "Por Via Das Duvidas Esta Tag Não Será Renomeada!"
         fi
         nm="`echo "$musica" | iconv -f $codin -t $codout`"
         retval=$?
         if [ "$retval" == "0" ];then
             echo "Convertendo Titulo De: $musica Para: $nm"
             mp3info -t "$nm" "$A"
         else
             echo "$musica Ja Esta Codificado, Ou Você Escolheu Uma Codificação Errada"
             echo "Por Via Das Duvidas Esta Tag Não Será Renomeada!"
         fi
          fi
      fi
       done
   cd ..
   fi
    fi
done
}
#----------------------------------------------------------------------------------------------------------|
id3v1()
{
echo "Converter Id3v1"
echo "De: $codin Para : $codout"
info
}
#----------------------------------------------------------------------------------------------------------|
# Analisa Os Diretorios + Sub-Diretorios...essa eh a parte mais chata...                                   |
#----------------------------------------------------------------------------------------------------------|
diretorio()
{
dirin=$PWD
cod
echo "Converter Diretorio $dirin"
echo "De: $codin Para : $codout"
procura
if [ "$sd" != "0" ];then
   subdir
fi
if [ "$cont" != "0" ];then
   id3v1
fi
}
#----------------------------------------------------------------------------------------------------------|
subdir()
{
echo "Convertendo Os Sub-Diretorios..."
echo "De: $codin Para : $codout"
for A in *;do
    dir=$(file -b "$A")
    if [ "$dir" == "directory" ];then
   echo "Convertendo Sub-Diretorio $A"
   cd "$A"
   procura
   cd ..
    fi
done
}
#----------------------------------------------------------------------------------------------------------|
# Muda a Id3v1 De Uma MP3 Somente...Bem Simples!                                                           |
#----------------------------------------------------------------------------------------------------------|
id3mp3()
{
echo "Converter Id3v1"
echo "De: $codin Para : $codout"
autor=$(mp3info "$novo" -p %a)
musica=$(mp3info "$novo" -p %t)
if [[ "$autor" != "" && "$musica" != "" ]];then
    na="`echo "$autor" | iconv -f $codin -t $codout`"
    retval=$?
    if [ "$retval" == "0" ];then
   echo "Convertendo Autor De: $autor Para: $na"
   mp3info -a "$na" "$novo"
    else
   echo "$autor Ja Esta Codificado, Ou Você Escolheu Uma Codificação Errada"
   echo "Por Via Das Duvidas Esta Tag Não Será Renomeada!"
    fi
    nm="`echo "$musica" | iconv -f $codin -t $codout`"
    retval=$?
    if [ "$retval" == "0" ];then
   echo "Convertendo Titulo De: $musica Para: $nm"
   mp3info -t "$nm" "$novo"
    else
   echo "$musica Ja Esta Codificado, Ou Você Escolheu Uma Codificação Errada"
   echo "Por Via Das Duvidas Esta Tag Não Será Renomeada!"
    fi
fi
}
#----------------------------------------------------------------------------------------------------------|
# MP3 Somente...A Ideia eh basicamente essa..Se For Mp3,v Se Rola Conversao, sim \o/!Simples Nao? 2=P      |
#----------------------------------------------------------------------------------------------------------|
mp3()
{
arquin=$(echo "$arq" | sed 's/.*\///g')
dirin=$(echo "$arq" | sed "s/$arquin//g")
cd "$dirin"
dirin=$PWD
cod
echo "Converter Arquivo: $dirin/$arquin"
echo "De: $codin Para : $codout"
novo="`echo "$arquin" | iconv -f $codin -t $codout`"
retval=$?
if [ "$retval" == "0" ];then
    if [ "$novo" != "$arquin" ] ; then
   echo "Movendo De :$arquin / Para: $novo"
   mv "$arquin" "$novo"
    fi
else
   echo "$arquin Ja Esta Codificado,Ou Você Escolheu Uma Codificação Errada"
   echo "Por Via Das Duvidas Este Arquivo Não Será Renomeado"
fi
if [ "$cont" != "0" ];then
   id3mp3
fi
}
#----------------------------------------------------------------------------------------------------------|
# Opções Avançadas..                                                                                       |
#----------------------------------------------------------------------------------------------------------|
menump3()
{
echo "Você Escolheu Uma Mp3"
echo "Agora Escolha Oq Deseja Fazer:"
echo "1- Converter O Nome Da Mp3;"
echo "2- Converter A Tag(Id3v1);"
echo "3- Converter Tudo;"
echo "4- Sair;"
read -p "[1,2,3,4]" m1
arq=$escolha
novo=$escolha
case $m1 in
   1)cont=0;mp3;;
   2)cod;id3mp3;;
   3)mp3;;
   4)exit;;
   *)echo "Opção $m1 Invalida, Voltando Para O Menump3";menump3;;
esac
}
menudir()
{
cd "$escolha"
echo "Você Escolheu Um Diretorio!"
echo "Antes De Escolher Oq Converter,Deseja"
echo "Converter Tambêm Os Sub-Diretorios?"
read -p "[Sim/nao]" sub
case $sub in
   Sim);;
   nao)sd=0;;
   *)echo "$sub Esta Errado, Vc Deve Dizer Sim ou nao.Voltando Para o Menudir";menudir;
esac
echo "Agora Escolha Oq Deseja Fazer:"
echo "1- Converter Os Nomes Das Mp3s ;"
echo "2- Converter As Tags(Id3v1);"
echo "3- Converter Tudo;"
echo "4- Sair;"
read -p "[1,2,3,4]" m1
case $m1 in
   1)cont=0;diretorio;;
   2)cod;id3v1;;
   3)diretorio;;
   4)exit;;
   *)echo "Opção $m1 Invalida, Voltando Para O Menump3";menump3;;
esac
}
expert()
{
echo ""
echo "As Opções Avanças Funcionam Assim:"
echo ""
echo "mp3traduz -A [Arquivo/Pasta]"
echo ""
echo "Apos Feito Isso Siga As Instruções"
echo "Do Programa e Pronto!"
tipo=$(file -b "$escolha" | sed 's/ .*//g')
if [ "$tipo" == "MP3" -o "$tipo" == "MPEG" ];then
   menump3
elif [ "$tipo" == "directory" ];then
   menudir
fi
}
#----------------------------------------------------------------------------------------------------------|
# Inicio De Tudo..                                                                                         |
#----------------------------------------------------------------------------------------------------------|
escolha=$2
op1=$1
checando

Scripts recomendados

Compactando arquivos em lote

Testador de MD5

Organizador da saída do objdump

Busca e copia arquivos renomeando-os conforme a máscara

Monitorando tentativas de conexões


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário