Jukebox com dialog
Publicado por wellington (última atualização em 30/06/2018)
[ Hits: 1.840 ]
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
Descobrir biblioteca faltante ao rodar *.exe no wine
script para desligar o pc com hora marcada
Script simple backup em Fita DAT
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)