Conversor de músicas

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

[ Hits: 4.774 ]

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: marlonreck@hotmail.com      #
######################################

#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

usando a lixeira em modo texto

Remoção de arquivos pela data

Script para desmontar partição/unidade

Script Para Manutenção de usuários do Sistema

Estrutura HTML básica no nano


  

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