Jukebox com dialog

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

[ Hits: 1.840 ]

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

Descobrir biblioteca faltante ao rodar *.exe no wine

Copiar fotos da Canon S1X IS

script para desligar o pc com hora marcada

Script simple backup em Fita DAT

Diversao em Shell


  

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