Nicht schoen aber praktisch, gray ruft zum verbessern auf!
use strict;
my $SEARCH=$ARGV[0];
unless($SEARCH) { print "usage:\n\tshoudcast.pl <wasdenn?>\n"; exit;}
my $SHOUTCAST='http://www.shoutcast.com';
my $BROWSER='lynx -source -accept_all_cookies';
my $PLAYER='mpg123';
my $DUMP=`$BROWSER "$SHOUTCAST/directory/?s=$SEARCH" | grep \.pls`;
my (%TITLES);
my $CNT=0;
for(split /\n/, $DUMP)
{
chomp;
s/.*href=\"(.*pls)\".*/$1/i;
getpls($_, \%TITLES);
}
foreach(keys(%TITLES))
{
print"($CNT)$TITLES{$_}\n$_\n";
$CNT++;
}
if($CNT eq 0) { print"\nnothing found\n"; exit; }
print"\nsag an was ich spielen soll!\n";
my $SELECT;
chomp($SELECT=<STDIN>);
$CNT=0;
foreach(keys(%TITLES))
{
if($SELECT eq $CNT)
{
system("$PLAYER", "$_");
}
$CNT++;
}
sub getpls
{
my ($URL, $REF)=@_;
my $U;
my $PLSDUMP=`$BROWSER $SHOUTCAST$URL`;
for(split /\n/, $PLSDUMP)
{
if(s/File\d+\=(.*)/$1/)
{
$U=$_;
}
if(s/Title\d+\=(.*)/$1/)
{
s/\(.*\d+\)//;
$REF->{$U}=$_;
}
}
}