#!/usr/bin/perl
use warnings;
use strict;
# A short little script to yank down a list of sounds played in the
# previous day on 95.3 Party since their Web based Active X
# control trash for listening in live doesn't work, even on Windows.
# Version 1.0
BEGIN { @AnyDBM_File::ISA = qw(GDBM_File NDBM_File) }
use AnyDBM_File;
use Fcntl;
# Setup a place to keep track of what we've reported already; No dups
my %db;
my $db = "$ENV{HOME}/.953db";
tie %db, 'GDBM_File', $db, O_CREAT|O_RDWR, 0640;
use LWP::UserAgent;
# Fake IE
my $ua = LWP::UserAgent->new(
agent => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; T312461)'
);
my %args = (
startday => 'yesterday',
starttime => 'midnight',
endday => 'yesterday',
endtime => '23',
callsign => 'wpyo-fm',
tz => '0',
st => 'time',
tagline => '953 Party',
station_id => '10046'
);
my $args = join( '', map { "$_=$args{$_}&" } keys %args );
my $response = $ua->get(
"http://953party.com/cgi-bin/lastsongs/search.cgi?$args",
);
my $result = join( '', $response->content() );
my @songs = (
$result =~ m~top">(?! )([^<]+?)(?!\n)
(?:\s*]+?>|\s*)(.*?)(?:\s*|\s*)\s+~sg
);
# Ensure we're divisible by two
scalar( @songs ) % 2 && die;
# Associate artists with songs
my %songs = reverse @songs;
print "These songs played yesterday on 95.3 Party: Orlando's Party station!\n\n";
my $seen;
while( my( $k, $v ) = each %songs ) {
if( $k eq '' ) {
# Someone fsck'd up
next;
}
if( exists $db{ "$k $v" } ) {
# Already reported
next;
}
else {
$db{ "$k $v" }++;
print "$k -> $v\n";
$seen = 1;
}
}
if( ! $seen ) {
print "Looks like there weren't any or this already ran for today.\n";
}
print "\n";
untie %db;