Fala cara.... Vamos para a fase de beta testing!!
Seguinte, pra ele funcionar vc precisa ter o python (que praticamente todos linux já tem) e o pysqlite2. A instalação do pysqlite depende da distro... Como não sei qual é a sua não poso te ajudar. Mas acho que é muito provável que seu linux ja tenha o pysqlite também.
O programa ta em anexo. Como ele vai criar um pequeno banco de dados recomendo colocar ele em uma pasta. Sei la cria no seu /home, ou se for rodar como root em /etc.
Baixa ele e renomeia pra extensão .py, dá permissão de escrita e faz um teste:
$ mv randtrack.txt randtrack.py
$ chmod 770 randtrack.py
$ ./randtrack.py
Ele deve imprimir na tela uma "ajuda". Se der algum erro fala ai que eu te ajudo.
Pra usar ele é bem, simples. Como vc tinha aqueles arquivos fiz ele customizado. No meu exmplo tenho 3 arquivos: hard_rock.txt, heavy_metal.txt e old_rock.txt. Todos em /home/magnun. Vamos ver como utilizar:
Cadastrar arquivos de generos:
$ ./randtrack.py --add-file hard_rock.txt
A tabela files não existe no banco de dados!
Criando tabela files... [ok]
Atualizando o genero hard_rock... [ok]
$ ./randtrack.py --add-file heavy_metal.txt
Atualizando o genero heavy_metal... [ok]
$ ./randtrack.py --add-file old_rock.txt
Atualizando o genero old_rock... [ok]
Se vc olhar agora ele criou um banco de dados com o nome de tracks.db. O programa se baseia no nome do arquivo pra classificar o genero da música. Vamos ver como tá nosso banco de dados:
$ ./randtrack.py --show
Tabela Files:
hard_rock: hard_rock.txt
heavy_metal: heavy_metal.txt
old_rock: old_rock.txt
tabela tracks inexistnte...
Ele cria os estilos e vincula os arquivos. Agora vamos criar a lista de tracks:
$ ./randtrack.py --update heavy_metal
A tabela tracks não existe no BD
Criando tabela tracks... [ok]
Limpando as tracks do genero heavy_metal... [ok]
Adicionando tracks do genero heavy_metal... [ok]
Com esse comando você pode atualizar apenas um genero. Mas você pode atualizar todos de uma vez:
$ ./randtrack.py --update-all
Atualizando o genero hard_rock...
Limpando as tracks do genero hard_rock... [ok]
Adicionando tracks do genero hard_rock... [ok]
Atualizando o genero heavy_metal...
Limpando as tracks do genero heavy_metal... [ok]
Adicionando tracks do genero heavy_metal... [ok]
Atualizando o genero old_rock...
Limpando as tracks do genero old_rock... [ok]
Adicionando tracks do genero old_rock... [ok]
Pronto. Toda a tabela ta criada:
$ ./randtrack.py --show
Tabela Files:
hard_rock: hard_rock.txt
heavy_metal: heavy_metal.txt
old_rock: old_rock.txt
Tabela Tracks:
hard_rock: /home/magnun/mp3/hard/tr1.mp3
hard_rock: /home/magnun/mp3/hard/tr2.mp3
hard_rock: /home/magnun/mp3/hard/tr3.mp3
hard_rock: /home/magnun/mp3/hard/tr4.mp3
hard_rock: /home/magnun/mp3/hard/tr5.mp3
heavy_metal: /home/magnun/mp3/heavy/tr1.mp3
heavy_metal: /home/magnun/mp3/heavy/tr2.mp3
heavy_metal: /home/magnun/mp3/heavy/tr3.mp3
heavy_metal: /home/magnun/mp3/heavy/tr4.mp3
heavy_metal: /home/magnun/mp3/heavy/tr5.mp3
old_rock: /home/magnun/mp3/old/tr1.mp3
old_rock: /home/magnun/mp3/old/tr2.mp3
old_rock: /home/magnun/mp3/old/tr3.mp3
old_rock: /home/magnun/mp3/old/tr4.mp3
old_rock: /home/magnun/mp3/old/tr5.mp3
Agora para gerar as listas aleatórias só utilizar o seguinte comando:
$ ./randtrack.py --rand 10 /home/magnun/teste.lst
Olhando o conteúdo do arquivo:
$ cat teste.lst
/home/magnun/mp3/hard/tr5.mp3
/home/magnun/mp3/hard/tr3.mp3
/home/magnun/mp3/heavy/tr1.mp3
/home/magnun/mp3/old/tr1.mp3
/home/magnun/mp3/heavy/tr3.mp3
/home/magnun/mp3/heavy/tr4.mp3
/home/magnun/mp3/heavy/tr2.mp3
/home/magnun/mp3/hard/tr4.mp3
/home/magnun/mp3/old/tr5.mp3
/home/magnun/mp3/old/tr4.mp3
Como você citou a possibilidade de gerar listas por genero tem a seguinte opção:
$ ./randtrack.py --rand 5 heavy_metal /home/magnun/teste.lst
$ cat teste.lst
/home/magnun/mp3/heavy/tr3.mp3
/home/magnun/mp3/heavy/tr5.mp3
/home/magnun/mp3/heavy/tr4.mp3
/home/magnun/mp3/heavy/tr2.mp3
/home/magnun/mp3/heavy/tr1.mp3
Se vc adicionar novas músicas basta chamar o --update-all e pronto, as próximas gerações randômicas vão incluir os novos arquivos.
Bem, é isso ai... Qualquer coisa posta ai!