Gerar músicas aleatórias com YAD (Modo Gráfico)

Este script com interface gráfica (em YAD), irá gerar músicas aleatórias da pasta selecionada. Você pode escolher uma pasta
específica de uma determinada banda, a sua pasta de música ou até mesmo selecionar a raiz de seu sistema. Você poderá
escolher quantas músicas deseja reproduzir e salvar sua Playlist gerada para ouvi-las futuramente.

[ Hits: 13.840 ]

Por: Alexandre Gonçalves Monteiro da Silva em 18/12/2011 | Blog: https://www.vivaolinux.com.br/~alexandre_gms


Mais opções e Código do Script



Mais Opções

Bom, agora vamos ao passo a passo de como executar uma PlayList!

Execute o "random_music.sh" e selecione a opção 2: "Executar uma PlayList":
Linux: Gerar músicas aleatórias com YAD (Modo Gráfico)

Nesta tela você irá escolher a(s) PlayList(s) que salvou, todas serão armazenadas na pasta 'Home' do usuário como vimos anteriormente; porém, nada impede que você as deixe em outro local do seu sistema após ter salvo!

Em nosso exemplo, vou escolher a PlayList que salvei "vale_a_pena_ouvir_de_novo":
Linux: Gerar músicas aleatórias com YAD (Modo Gráfico)

Em seguida a sua PlayList será carregada e exibida para você conferir:
Linux: Gerar músicas aleatórias com YAD (Modo Gráfico)

Caso você queira ouvi-las basta clicar em 'YES', caso contrário clique em 'NO' e selecione outra PlayList.

No final de cada execução, o programa perguntará ao usuário se o mesmo deseja voltar ao início, desta forma economiza os seus "./". ;-)

Bom divertimento!

O código

Bom pessoal, vamos ao código fonte agora.

Não inseri comentários, mas procurei deixá-lo com uma boa edentação para vocês alterarem se precisar!

Bom divertimento!

#!/bin/bash

RAND="/tmp/random.txt"
MUSIC="/tmp/music.txt"

INICIO()
{

yad --title='RANDOM MUSIC' \
       --width='280' \
       --height='100' \
       --button=gtk-yes:0 --button=gtk-no:1 \
       --center \
       --text "DESEJA VOLTAR AO INICIO?" \

    if [ $? -eq 0 ]; then

        MENU

    else

        exit 1

    fi
}

RANDOM_MUSIC()
{

if [ -f $RAND ] || [ -f $MUSIC ]; then

    rm -f $RAND $MUSIC &> /dev/null || exit 1

fi

PASTA=$(\

      yad --file --directory --title "SELECIONE A PASTA MUSICAS: " \
             --width='600' --height='400' \
       )

test ! -z $PASTA || exit 2

QUANT=$(find $PASTA -type f -iname '*.mp3' -o -iname '*.wma' -o -iname '*.wav' -o -iname '*.ogg' | wc -l)

NUMERO=$(\

      yad --entry \
             --entry-label="Quantas musicas deseja buscar?" \
             --entry-text="Digite aqui" \
             --completion \
             --editable \
             --title="RANDOM MUSIC" \
             --width="500" \


        )

test ! -z $NUMERO || exit 2

if [ $NUMERO -ge $QUANT ]; then

yad --title="RANDOM MUSIC" \
       --text="A QUANTIDADE ESCOLHIDA DE MUSICAS EH MAIOR QUE O NUMERO TOTAL DE SOM NA PASTA" \
       --width="650" \
       --height="100" \
       --button=gtk-ok:0 \ 

    if [ $? -eq 0 ]; then

       rm -f $MUSIC $RAND &> /dev/null
       INICIO

    fi

fi

for ((i=0; i<$NUMERO; i++))
do

    echo $(($RANDOM % $QUANT)) >> $RAND

done

test -f $RAND || exit 2

j=0

find $PASTA -type f -iname '*.mp3' -o -iname '*.wma' -o -iname '*.wav' -o -iname '*.ogg' | \

    while read line
    do

        for k in `cat $RAND`
        do

            if [ $j -eq $k ]; then

                echo "$line" >> $MUSIC

            fi

        done

        let j++

    done | \

yad --progress \
        --title 'RANDOM MUSIC' \
       --width='500' \
       --progress-text='Gerando lista randomica...' \
       --pulsate \
       --auto-close \
       --auto-kill \

cat $MUSIC | awk -F"/" '{print $NF}' | \

yad --list \
       --title 'RANDOM MUSIC' \
       --column 'DESEJA OUVIR ESTAS MUSICAS? ' \
       --width="500" \
       --height="500" \
       --button=gtk-yes:0 --button=gtk-no:1 \

    if [ $? -eq 1 ]; then

        INICIO

    fi

    mplayer -quiet -playlist $MUSIC 2> /dev/null

yad --title='RANDOM MUSIC' \
       --width='280' \
       --height='100' \
       --button=gtk-yes:0 --button=gtk-no:1 \
       --center \
       --text  "Deseja salvar esta lista de Reprodução?"

    if [ $? -eq 0 ]; then

        PLAYLIST=$(\

        yad --entry \
               --entry-label="Nome: " \
               --entry-text="Digite aqui o nome de sua PlayList" \
               --completion \
               --editable \
               --title="RANDOM MUSIC" \
               --width="500" \
                  
                  )

        cp -p $MUSIC ~/$PLAYLIST
        if [ $? -eq 0 ]; then

            yad --title 'RANDOM MUSIC' --text "\nARQUIVO $PLAYLIST SALVO NO HOME DO USUARIO\n"

        else

            yad --title 'RANDOM MUSIC' --text "\nPROBLEMAS AO SALVAR O ARQUIVO $PLAYLIST \n"
            exit 1

        fi

    fi

    INICIO

}


FUNC_PLAYLIST()
{

cd ~

ARQUIVO_PLAY=$(\

      yad --file --title "SELECIONE A SUA PLAYLIST: " \
             --width='600' --height='400' \

              )

test -z $ARQUIVO_PLAY && exit 1

cat $ARQUIVO_PLAY | awk -F"/" '{print $NF}' | \

yad --list \
       --title 'RANDOM MUSIC' \
       --column 'DESEJA OUVIR AS MUSICAS DA SUA PLAYLIST?' \
       --width="500" \
       --height="500" \
       --button=gtk-yes:0 --button=gtk-no:1 \

   if [ $? -eq 0 ]; then

       mplayer -quiet -playlist $ARQUIVO_PLAY 2> /dev/null

   else

       INICIO

   fi


}

MENU()
{

while  OPCOES=$(\

yad --list \
       --title='RANDOM MUSIC' \
       --column="OP":NUM \
       --column="           ESCOLHA UMA OPÇÃO:":TEXT \
       --print-column=1 --hide-column=1 \
       --width='270' --height='200' \
       --button='_Sair:1' --button='_Acessar:0' \
       "1" "Gerar Musicas Aleatorias" \
       "2" "Executar uma PlayList" \

                            )

do

    case $OPCOES in

        1\|) RANDOM_MUSIC
        ;;

        2\|) FUNC_PLAYLIST
        ;;

    esac

done

}

MENU
Página anterior    

Páginas do artigo
   1. Instalando os componentes e Opções para o script
   2. Mais opções e Código do Script
Outros artigos deste autor

Script com muitas utilidades para arquivos e pastas

Leitura recomendada

Como programar backup com rsync e cron de maneira rápida e simples

cal2svg - brincando com shell script e arquivos vetoriais SVG

O comando tput

Alta disponibilidade de links

GNU Parallel: criando atividades em paralelo com shell script

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts