Jukebox com dialog

Publicado por wellington (última atualização em 30/06/2018)

[ Hits: 1.811 ]

Download jukebox




Jukebox para PCs antigos, em shell script, usando dialog como interface de usuário.

  



Esconder código-fonte

#!/bin/bash

#----------------------------------->JUKEBOX<----------------------------------|

# Um script dinâmico para tocar músicas, ele cria listas atualizadas em todas as
#execuções e a cada etapa cuida de um aspecto como:tipo de música, cantor,albúns
#e até lista de CD's duplos, triplos, etc.
# Não acrescentei muitos comentários por ser extremamente simples, segue:
#
#VARIÁVEIS
#FUNÇÕES
#
#1ªparte: Loop (while), criação do dir temporário ($TMP1), mudança para o dir de
#música($DIR1),na linha 99 existe um comando para correção do nome de diretório,
#retirando ESPAÇOS VAZIOS e substituindo por UNDERLINE, em seguida o Dialog com
#as opições criadas pela lista(ls>$LISTA1) e limpeza dos TMPs,que pode acontecer
#conforme a escolha de como o script vai agir,se vai tocar já nesta etapa e sair
#ou se segue com as opições.
#
#2ªparte: Escolha entre os cantores. Aqui não tem opição para tocar músicas.
#
#3ªparte: Nesta etapa, se já existir música(mp3)dentro do dir será executada,se
#não o Dialog entra novamente com as opições de escolha e na saida limpa os TMPs
#
#4ªparte: idem a 3ª parte.
#
#5ªparte: Se chegou até aqui é por que já escolheu tipo de música, cantor, albúm
#e CD 1,2 ou 3, etc. Nesta, o Dialog vai apresentar suas escolhas e o mpg123 vai
#tocar o que estiver dentro do dir, como sempre, na saida a limpeza dos TMPs.
#
#Obs.: O script foi montado conforme a minha estrutura de diretórios e pode ser
#necessário adaptação. Por isso as VARIÁVEIS e FUNÇÕES.
#----------------------------------->CRÉDITOS<---------------------------------|
 
#Aurelio Marinho Jargas
# http://aurelio.net/shell/dialog/#prefacio
# http://aurelio.net/regex/guia/
#Diego Mendes Rodrigues
# https://www.vivaolinux.com.br/topico/Shell-Script/Teste-com-o-if
#http://www.zago.eti.br/script/sed.html
#Hugo Cisneiros (Eitch) - http://www.devin.com.br/shell_script/
#Jefferson Rocha - https://slackjeff.com.br/
#----------------------------------->VARIÁVEIS<--------------------------------|
TMP1=/tmp/001                 #Diretório temporário para as listas de mp3
DIR1=~/Musica                 #Diretório de músicas
EXT=.mp3                      #Tipo de arquivo de música
LISTA1=/tmp/001/lista1.txt    #Lista temporária da playlist
LISTA2=/tmp/001/lista2.txt    #             // 
LISTA3=/tmp/001/lista3.txt    #             //
LISTA4=/tmp/001/lista4.txt    #             //
JKBX=/usr/local/bin/jukebox   #Local ou link do Script
fch="\033[m"
vrd="\033[32;1m"
vrm="\033[31;1m"
brn="\033[37;1m"
#----------------------------------->FUNÇÕES<----------------------------------|
function_clear(){            #Limpar TMPs      
clear
printf "%b$brn Limpando Listas...$fch"
  find $DIR1 -name '.lista.m3u' -type f |\
    while read line;\
    do rm $line;\
    done
  find $TMP1 -name '001' -type d |\
    while read line2;\
    do rm -rf $line2;\
    done
}
function_echo(){             #Tela de saida
printf "%b \
\\n\\n\\n\\t\\t\\t$vrm  JukuBox$fch
\\t$vrd===========================================
\\tPara recomeçar digite$fch$brn jukebox$fch$vrd e tecle enter
\\t===========================================$fch\\n\\n\\n\\n%b"
}
function_repeat(){           #Retorno a tela de inicio
if [ $? = 0 ]; then
  source $JKBX
else
  clear
  function_echo
fi
}
#ESTÁ FUNÇÃO ALTERA O NOME DE DIRETÓRIOS COLOCANDO UNDERLINE "_" NO LUGAR DE
#ESPAÇOS VAZIOS " " NOS NOMES DE DIR, CASO NECESSÁRIO. LINHA 99 DO SCRIPT.
#function_ren(){
#find . -name "*" -type d | while read line;\
#       do mv "$line" "$(echo $line | sed 's/ /_/g')"; done
#}
#----------------------------------->PRIMEIRA PARTE<---------------------------|
proxima=primeira
while : ; do
  case "$proxima" in
    primeira)
      proxima=segunda
      anterior=primeira
        mkdir $TMP1
        cd $DIR1
       #function_ren
        ls > $LISTA1
          dialog --title 'JukeBox'\
                 --yesno 'Deseja que o sistema escolha as músicas?' 0 0
            if [ $? = 0 ]; then
              MUSICA=$(dialog --title 'JukeBox'\
                              --stdout\
                              --menu 'Escolha o que quer ouvir' 0 0 0 \
                              $( cat $LISTA1 | sed 's/$/ \\/'));
              cd $MUSICA;
              find . -name "*$EXT" > .lista.m3u;
              mpg123 -@ .lista.m3u -Z -C -v --rva-album;
              function_clear
              dialog --title 'JukeBox'\
                     --yesno 'Deseja ouvir novamente' 0 0
                function_repeat
              exit
            else
              PASTA1=$( dialog --title 'JukeBox'\
                               --stdout\
                               --menu 'Escolha o que quer ouvir' 0 0 0\
                               $( cat $LISTA1 | sed 's/$/ \\/'))
            fi
#----------------------------------->SEGUNDA PARTE<----------------------------|
  ;;
  segunda)
    proxima=terceira
    anterior=primeira
      cd $PASTA1
      ls > $LISTA2
      PASTA2=$( dialog --title 'JukeBox'\
                       --stdout\
                       --menu 'Escolha a Banda' 0 0 0\
                       $(cat $LISTA2 | sed 's/$/ \\/'))
#----------------------------------->TERCEIRA PARTE<---------------------------|
    ;;
    terceira)
      proxima=quarta
      anterior=primeira
        cd $PASTA2
          dialog --title 'JukeBox'\
                 --yesno 'Deseja escutar a discografia' 0 0
            if [ $? = 0 ]; then
              find . -name "*$EXT" > .lista.m3u;
              mpg123 -@ .lista.m3u -Z -C -v --rva-album;
              function_clear
              dialog --title 'JukeBox'\
                     --yesno 'Deseja ouvir novamente' 0 0
                function_repeat
              exit
            fi
        mp3=$( ls -al | grep '^-' | awk '{ print $9 }')
        pasta=$( ls -al | grep '^d' | awk '{ print $9 }' )
          for dir in $pasta;
          do
            if [ $dir != '.' ]; then
              if [ $dir != '..' ]; then
                ls > $LISTA3
              fi
            fi
          done
          for arq in $mp3;
          do
            ls -1 *$EXT > .lista.m3u;
            dialog --cr-wrap\
                   --sleep 1\
                   --title 'JukeBox'\
                   --infobox\
                   "Músicas que você escolheu
                   Tipo   : $PASTA1
                   Banda  : $PASTA2
                   Disco  : $PASTA3
                   Músicas: \n`cat .lista.m3u`
                   " 0 0;
            mpg123 -@ .lista.m3u -C -v --rva-album;
            function_clear
            dialog --title 'JukeBox'\
                   --yesno 'Deseja ouvir novamente' 0 0
                function_repeat
            exit
          done
        PASTA3=$( dialog --title 'JukeBox'\
                         --stdout\
                         --menu 'Escolha o Disco' 0 0 0\
                         $( cat $LISTA3 | sed 's/$/ \\/'))
#----------------------------------->QUARTA PARTE<-----------------------------|
    ;;
    quarta)
      proxima=final
      anterior=primeira
        cd $PASTA3
        mp3_1=$( ls -al | grep '^-' | awk '{ print $9 }')
        pasta_1=$( ls -al | grep '^d' | awk '{ print $9 }')
          for dir in $pasta_1;
          do
            if [ $dir != '.' ]; then
              if [ $dir != '..' ]; then
                ls > $LISTA4
              fi
            fi
          done
          for arq in $mp3_1;
          do
            ls -1 *$EXT > .lista.m3u;
            dialog --cr-wrap\
                   --sleep 1\
                   --title 'JukeBox'\
                   --infobox\
                   "Músicas que você escolheu
                   Tipo   : $PASTA1
                   Banda  : $PASTA2
                   Disco  : $PASTA3
                   Músicas: \n`cat .lista.m3u`
                   " 0 0;
            mpg123 -@ .lista.m3u -C -v --rva-album;
            function_clear
            dialog --title 'JukeBox'\
                   --yesno 'Deseja ouvir novamente' 0 0
                function_repeat
            exit
          done
        PASTA4=$( dialog --title 'JukeBox'\
                         --stdout\
                         --menu 'Escolha o Disco' 0 0 0\
                         $( cat $LISTA4 | sed 's/$/ \\/'))
#----------------------------------->QUINTA PARTE<-----------------------------|
    ;;
    final)
      anterior=primeira
        cd $PASTA4
        ls -1 *$EXT > .lista.m3u
          dialog --cr-wrap\
                 --sleep 1\
                 --title 'JukeBox'\
                 --infobox\
                "Músicas que você escolheu
                Tipo   : $PASTA1
                Banda  : $PASTA2
                Disco  : $PASTA3
                Número : $PASTA4
                Músicas:\n`cat .lista.m3u`
                " 0 0;
          mpg123 -@ .lista.m3u -C -v --rva-album;
    break
    ;;
    *)
      printf "%b\\t$vrm $proxima $fch"
      printf "%b\\t$vrm falha $fch"
      exit
  esac
    retorno=$?
 [ $retorno -eq 1   ] && proxima=$anterior #cancelar
 [ $retorno -eq 255 ] && break #Esc
done
function_clear
dialog --title 'JukeBox'\
       --yesno 'Deseja ouvir novamente' 0 0
    function_repeat
exit

Scripts recomendados

Selecionar wallpaper no Fluxbox (baseado no Xdialog)

MURFEX (MUltiple Rar File EXtractor)

Atualização Multilib no Slackware

Mostra cores

SCM - Compressão em Massa


  

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