user i can't see (yet) the titles of songs while listening to streaming radios. So i wrote a simple script to see what's on
my $urlmask = 'http://radiostorm.com/%s';
my %pls;
my $config = <<EOF;
News//ap24.pls
80s/80s.js/80s128.pls
Classic Rock/classic.js/classic128.pls
Alternative/alt.js/alt128.pls
Hip-Hop/hh.js/hiphop128.pls
Pop Top 40/pop.js/pop128.pls
Hard Rock/hr.js/hr128.pls
EOF
my @radio = map {my @t = split "\/", $_;
{caption => $t[0] ,js => $t[1], pls => $t[2]}
} split "\n", $config;
my $template = "%12s %s\n" . ' ' x 14 . "%s\n";
while (1) {
for (@radio) {
printf $template, $_->{caption}, getjs($_->{js}), getpls($_->{
+pls});
}
print "\n" . ('- _ ' x 20) . "\n\n";
sleep 60;
}
sub getjs {
my $js = shift;
return unless $js;
my ($t) = mget($js) =~ /"([^"]+)"/;
return $t;
}
sub getpls {
my $pls = shift;
unless ($pls{$pls}) {
my $file = mget($pls);
my $num = $file =~ s/^(File\d=)/$1/gm;
($pls{$pls}) = $file =~ m!File$num=(.+)!;
}
return $pls{$pls};
}
sub mget {
return get sprintf($urlmask, shift);
}
UPDATE: caching using
%pls now makes sense :)
$|=$_="1g2i1u1l2i4e2n0k",map{print"\7",chop;select$,,$,,$,,$_/7}m{..}g