Jukebox com dialog
Publicado por wellington (última atualização em 30/06/2018)
[ Hits: 1.826 ]
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
Shell Script para criar chave ssh e logar no servidor sem digitar senha
Migrar de MySQL 3.x e 4.x para 5.0 no Debian
[ResuLinux] Discador Claro 3G em dialog
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)
Melhorando a precisão de valores flutuantes em python[AJUDA] (8)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta