randmusic.pl
Publicado por zé ricardo 22/02/2005
[ Hits: 4.191 ]
É um script derivado do randomp3. A diferença é que ele toca ogg's e wma's tb. Eu já estava com a idéia de fazer um script para isso, como vi que já tinham feito, achei que podia dar uma melhoradinha, tá ae! :) Falta achar um jeito para fechá-lo com ctrl+c e ainda dar a opção de pular a música. Nenhum dos dois scripts faz isso. :(
#!/usr/bin/perl -w
# Script derivado do randomMp3: http://www.vivaolinux.com.br/scripts/verScript.php?codigo=22
# Este toca ogg's e wma's , é necessário ter o ogg123 e o mplayer instalados
# Autor: Zé Ricardo (zehzinho@gmail.com)
use Cwd;
use strict;
use warnings;
my $diretorio = "";
if ($#ARGV != 0)
{
$diretorio = getcwd;
}
else
{
$diretorio = shift;
}
my @arquivos = ();
my %lista = ();
my $menor = 1;
if (!-d $diretorio)
{
print "Diretório maluco ?\n";
exit;
}
chdir $diretorio;
opendir(D,$diretorio);
my @mp3 = grep /\.mp3$/i, readdir(D);
rewinddir D;
my @ogg = grep /\.ogg$/i, readdir (D);
rewinddir D;
my @wma = grep /\.wma$/i, readdir (D);
@arquivos = (@mp3, @ogg, @wma);
# limpando...
@mp3 = ();
@ogg = ();
@wma = ();
closedir(D);
if (!"@arquivos")
{
print "Cadê as músicas deste diretório ?\n";
exit;
}
foreach my $arquivo (@arquivos)
{
if (!defined($lista{$arquivo}))
{
$lista{$arquivo} = 1;
}
}
sub round
{
my $x = shift;
$x = sprintf "%.0f",$x;
return $x;
}
do
{
my $rotates = 0;
do
{
my $indice = round(rand($#arquivos));
if ($lista{$arquivos[$indice]} <= $menor)
{
$lista{$arquivos[$indice]}++;
print "Reproduzindo música: $arquivos[$indice] ...\n";
if ($arquivos[$indice] =~ /.mp3$/i)
{
exec("mpg321 '$arquivos[$indice]' 1>>/dev/null 2>>/dev/null") || system("mpg123 '$arquivos[$indice]' 1>>/dev/null 2>>/dev/null") || die "O programa terminou de maneira inesperada\n";
}
elsif ($arquivos[$indice] =~ /.ogg$/i)
{
exec("ogg123 '$arquivos[$indice]' 1>>/dev/null 2>>/dev/null") || die "O programa terminou de modo inesperado\n";
}
else # eh .wma
{
exec("mplayer '$arquivos[$indice]' 1>>/dev/null 2>>/dev/null") || die "O programa terminou de modo inesperado\n";
}
}
$rotates++;
} while ($rotates <= $#arquivos);
$menor++;
} while(1);
Testando a agilidade do sistema de arquivos
Algoritmo de Euclides estendido em Perl
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica









