Jukebox com dialog
Publicado por wellington (última atualização em 30/06/2018)
[ Hits: 2.097 ]
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
dForm - Formatador de Dispositivos
QMPlay2 20.12.16 Build para o Deepin 20 - Novo Esquema
Detectar sistemas operacionais dos dispositivos na rede via TTL
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (6)
Impressora epson l6270 não funciona em Linux mint (0)
esqueci a senha do boot do notebook dell vostro 3300 (3)









