[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
convertesor de musica com Zenity
From: |
Marlon Vagner Reck |
Subject: |
convertesor de musica com Zenity |
Date: |
Mon, 5 Dec 2011 08:58:26 -0200 |
User-agent: |
KMail/1.13.7 (Linux/2.6.35.14-106.fc14.i686.PAE; KDE/4.6.5; i686; ; ) |
Bom dia
Estes dias um colega de trabalho pediu para converter umas músicas de
wma para mp3. Tranquilo de fazer usando o
"ffmpeg", só que eram mais de uma, então usei um laço "for".
Como ele ainda é novo no linux, resolver fazer tudo com zenity para que
ele possa usar sem abrir o terminal.
O resultado esta abaixo, estou compartilhando para que se interessar,
em funções com retorno e menu com ida e vinda.
#!/bin/bash
#Script para converter múscisas
#Criado: 03/12/2011
#Autor: Marlon V. Reck
#e-mail: address@hidden
#variaveis
contador=0
totalarq=0
cont=0
g_retorno=tela_original
function baybay {
local retorno="$1"
test "$retorno" -eq 1 && exit
}
#verifica se é arquivo ou diretório
function verifica_diretorio {
local dir="$diretorio"
local ori="$original"
local verifica
for verifica in "$dir"/*."$ori";do
if [ -f "$verifica" ]; then
g_retorno=tela_novof
else
zenity --error --text="Arquivo não encontrado no diretório
indicado.\nTente novamente!" --title="Conversor de música";
g_retorno=tela_diretorio
fi
done
}
#verifica se os formatos são iguais
function verifica_extensao {
local arqorig="$original"
local arqnovo="$novoformato"
if [ "$arqorig" = "$arqnovo" ]; then
zenity --error --text="Os formatos escolhidos são iguais.\nTente
novamente!" --title="Conversor de música";
g_retorno=tela_novof
else
g_retorno=tela_qualidade
fi
}
while [ "$g_retorno" != fim ]; do
case "$g_retorno" in
tela_original)
#tela para escolha do arquivo que vai ser convertido
original=$(zenity --list --height=280 --title "Conversor de música"
--text "Formato original" --radiolist --column "Marque" --
column "Extensão" TRUE wma FALSE flac FALSE ogg FALSE wav FALSE mp3 FALSE aac
FALSE flv)
baybay "$?"
g_retorno=tela_diretorio
;;
tela_diretorio)
#tela para escolher onde esta o arquivo
diretorio=$(zenity --file-selection --directory --title="Selecione o
diretório dos arquivos "$original"." --file-filter="*.$original")
baybay "$?"
verifica_diretorio "$diretorio" "$original"
;;
tela_novof)
#tela para escolher o novo formato do arquivo
novoformato=$(zenity --list --height=280 --title "Conversor de música"
--text "Novo formato" --radiolist --column "Marque"
--column "Extensão" FALSE wma FALSE flac FALSE ogg FALSE wav TRUE mp3 FALSE aac
FALSE flv)
baybay "$?"
verifica_extensao "$original" "$novoformato"
;;
tela_qualidade)
#tela para escolher a qualidade do arquivo
qualidade=$(zenity --list --height=280 --title "Conversor de música"
--text "Escolha a qualidade do arquivo convertido" --
radiolist --column "Marque" --column "kbps" FALSE 64 FALSE 96 TRUE 128 FALSE
192 FALSE 256 FALSE 320)
baybay "$?"
#contador de arquivos
for contador in "$diretorio"/*."$original";do let totalarq++; done
#acrescenta +1 no total de arquivos
totalarq=$((totalarq+1))
#conversão
if [ "$novoformato" = "ogg" ]; then
codec="-acodec libvorbis"
else
codec="-acodec libmp3lame"
fi
for nome in "$diretorio"/*."$original"; do
# echo para montar a barra de progresso
echo "# Convertendo "$nome""
echo $((++cont * 100/$totalarq))
#pega o nome do arquivo sem extensão
x=$(echo "$nome" | cut -f1 -d".")
ffmpeg -loglevel quiet -i "$nome" -f "$novoformato" $codec -ab
"$qualidade""k" -ar 44100 "$x"."$novoformato"
done | zenity --progress --auto-close --width 290 --no-cancel
--title="Convertendo "$original" para "$novoformato""
g_retorno=fim
;;
esac
done;
Atenciosamente
Marlon V. Reck
address@hidden
- convertesor de musica com Zenity,
Marlon Vagner Reck <=
Re: convertesor de musica com Zenity, Daniel, 2011/12/05