mp3traduz

Publicado por Perfil removido 05/12/2006

[ Hits: 8.160 ]

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 ed2ef@hyahoo.com.br 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 ed2ef@hyahoo.com.br 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

Teste de conexão

Script simples para cálculos com dialog

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

XFCE mínimo no Ubuntu 16.04

Enviar mensagem para os terminais ltsp


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts