Conversor de músicas

Publicado por Marlon Vagner Reck (última atualização em 05/01/2012)

[ Hits: 4.424 ]

Homepage: www.linkedin.com/in/marlonreck

Download converte-musica.sh




O shell-script a baixo, foi feito a pedido de um colega que precisava converter algumas músicas de wma para mp3, para estudar para o vestibular.

Ele foi feito com zenity e ffmepg e ainda conta com funções com retorno para o fluxo do programa e um menu com ida e vinda.

  



Esconder código-fonte

#!/bin/bash

######################################
#Script para converter múscisas      #
#                                    #
#Criado: 03/12/2011                  #
#Autor: Marlon V. Reck               #
#e-mail: [email protected]      #
######################################

#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;

Scripts recomendados

Fax Control - Nova versão

Firewall

xamore - um "more" simples em Xdialog

Baixar recursivamente links de um arquivo texto

Convertendo vídeos para tocar no DVD e na TV antiga da sala


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário