Randomize MP3
Publicado por Fábio Berbert de Paula 13/11/2002
[ Hits: 4.738 ]
Homepage: https://fabio.automatizando.dev
Script escrito em PERL usado para reproduzir arquivos MP3 de um diretório de formarandômica. Este script, ao contrário do xmms e do mpg123, tem sua lógica de randomização eficiente, não repetindo uma música antes que todas as outras sejam previamente reproduzidas.
#!/usr/bin/perl if ($#ARGV != 0) { print "Qual diretório ?\n"; exit; } use strict; my $diretorio = shift; my @arquivos = (); my %lista = (); my $menor = 1; if (!-d $diretorio) { print "Diretório maluco ?\n"; exit; } chdir $diretorio; opendir(D,$diretorio); @arquivos = grep /\.mp3$/i, readdir(D); closedir(D); if (!"@arquivos") { print "Cadê os MP3 deste diretório ?\n"; exit; } print "Termine o programa com 'kill -HUP $$' ...\n"; foreach my $arquivo (@arquivos) { if (!defined($lista{$arquivo})) { $lista{$arquivo} = 1; } } sub round { my $x = shift; $x = sprintf "%.0f",$x; return $x; } do { # SHUFFLE MODE my $rotates = 0; do { my $indice = round(rand($#arquivos)); if ($lista{$arquivos[$indice]} <= $menor) { $lista{$arquivos[$indice]}++; print "Reproduzindo música: $arquivos[$indice] ...\n"; system("mpg123 '$arquivos[$indice]' 1>>/dev/null 2>>/dev/null"); $rotates++; } } while ($rotates <= $#arquivos); $menor++; } while(1);
Índice (Logaritmo Discreto) em Perl
MyBF - Interpretador de BrainFuck
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Jogos baixados na Central de Aplicativos mas que não abrem (2)
debian com wayland, configuracao de teclado. Mudou Tudo! [RESOLVIDO] (1)
Iinstalar o Scanner Kodak i940 no Linux Mint 19/20? (3)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (11)