Criar playlist

editado maio de 2011 em Programação e Scripts
Pessoal, precisei certa vez saber quantos arquivos de áudio existia no meu diretório, claro que estes estavam espalhados em diversos locais. O comando find resolveu, mas fui mais além, aproveitei o poder do shell e criei um playlist com o resultado para importar a partir do meu player preferido.

Vejam como ficou o script, se preferirem baixem o anexo. Qualquer melhoria é bem vinda.

[code]
#!/bin/bash
# playlist.sh

############################################################
# Author: Adriano Chambel M. Lima
# Date: 2011-05-02
# Subject: Este script tem por finalidade buscar a localização
# dos principais arquivos de áudio a partir de um diretório
# informado pelo usuário. Ao término, um arquivo do tipo playlist
# é criado no diretório corrente do script.
# Uso: tornar este arquivo executável $chmod +x [diretório/]playlist.sh
# Duplo clique no arquivo ou via shell $./[diretório/]playlist.sh
# Ao término, basta abrir seu player preferido como o Rhythmbox e importar
# o playlist.
#############################################################

# Adiciona interface grafica para localização do diretório
DIR=$(zenity --title "Selecione o diretório" --file-selection --directory);

# Define o nome do arquivo "Ex. playlist-02-05-11.pls" seguido da extensão .pls
arquivo=playlist-$(date +'%d-%m-%y').pls

# Cria o arquivo playlist-[datacorrente].pls
echo "[playlist]" > $arquivo;

# Seta a variável IFS para manter o caminho absoluto do arquivo.
# Na verdade não sei explicar direito, mas o efeito é de não quebrar em novas
# linhas o caminho do arquivo.
IFS="$(echo -e "\\n\\r")";

# Faz a procura propriamente, utilizando o comando find com parametros de
# expressão regular onde definimos as possíveis extensões a encontrar nos arquivos.
for i in $(find $DIR -regextype posix-egrep -iregex '.*\.(mp3|mid|ogg|rm|wav|wma|aac|ac3)'); do
# Cria um contador que se incrementa a medida que encontra o arquivo.
let j++;

# Adiciona uma linha ao arquivo playlist-[datacorrente].pls com o padrão playlist
# o caminho absoluto do arquivo.
# Ex. File1=file:///home/acmlima21/musica.mp3
echo "File$j=file://$i" >> $arquivo;
done # Fim do for

# Mostra na tela uma mensagem de alerta com a quantidade de arquivos encontrados.
zenity --warning --text "PlayList $arquivo montada com $j arquivo(s)." --title "Tarefa concluída!";
# Fim do script
[/code]
·

Comentários

  • dhalsimdhalsim dhalsim
    editado maio de 2011
    Caraca, mandou muito bem!

    Eu acho que é preciso fazer um tratamento na variável $DIR antes de jogar ela no arquivo de saida... Tratar os caracteres especiais e o espaço em branco...
    Pq no primeiro teste aqui, eu não consegui importar a playlist... ai teste de novo jogando em outro diretório sem caracteres especiais e funcionou perfeitamente!

    Tenho que dar uma estudada nesses lances de script, eu acho doido demais...
    O tenso é arrumar tempo... a faculdade tá pesada demais!

    Mas parabéns ae!
    Doido demais!

    Abração!
    ·
Entre ou Registre-se para fazer um comentário.