Jukebox com dialog
Publicado por wellington (última atualização em 30/06/2018)
[ Hits: 2.180 ]
Jukebox para PCs antigos, em shell script, usando dialog como interface de usuário.
#!/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
Instalador automatizado SAMBA 4 AD e File Server CentOS 7
Identificar arquivos criados ou removidos no sistema.
Criação de usuário e aplicação de quota
Instalar NetBox (container) em CentOS 7
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém já testou o novo COSMIC Desktop? O que achou? (4)
Não consigo instalar distro antiga no virtualbox nem direto no hd (29)
queria saber como posso alterar a frequencia do meu ryzen 2300u pro (3)









