Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Radiostorm song titles

by giulienk (Curate)
on Jun 20, 2002 at 20:27 UTC ( #176145=CUFP: print w/replies, xml ) Need Help??

As a XMMS 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 anytime.
#!/usr/bin/perl use strict; use LWP::Simple;
my $urlmask = ''; 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 :)


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://176145]
Approved by FoxtrotUniform
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2021-03-08 16:09 GMT
Find Nodes?
    Voting Booth?
    My favorite kind of desktop background is:

    Results (126 votes). Check out past polls.