Jukebox com dialog
Publicado por wellington (última atualização em 30/06/2018)
[ Hits: 2.219 ]
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
Montando compartilhamentos windows
Bloquear Whatsapp, Facebook, Youtube e outros pelo IPTABLES
Usando mencoder para capturar vídeos da placa BT878
Zinxi - exibir informações do hardware
Efetua uma busca na rede por IPs(hosts) ativos
Nenhum comentário foi encontrado.
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









