Jukebox com dialog
Publicado por wellington (última atualização em 30/06/2018)
[ Hits: 2.133 ]
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
Usando dialog para adiciona usuários no squid
Instalador de novas versões do Java no Debian
Renomear legendas srt de filmes e séries
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
Queda no serviços da Cloudflare, alguns sites estão fora do ar. (1)
Perfil criado no samba ad dc não loga no Windows 10 e 11 (11)









