mp3traduz
Publicado por Perfil removido 05/12/2006
[ Hits: 8.477 ]
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.
#!/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
Huawei Claro - Configurar modem Huawei no Linux
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









