Acme-24

 view release on metacpan or  search on metacpan

lib/Acme/24.pm  view on Meta::CPAN

$VERSION = '0.04';

use strict;
use warnings;
use LWP::Simple  ();
use XML::RSSLite ();

use constant URL => 'http://www.notrly.com/jackbauer';

# Returns one random fact
sub random_jackbauer_fact
{
    my $url  = URL;
    my $page = LWP::Simple::get($url);
    my $fact = '';

    if($page =~ m(<p class="fact">([^<]+)</p>))
    {
        $fact = $1;
        $fact =~ s/^\s+//;
        $fact =~ s/\s+$//;

lib/Acme/24.pm  view on Meta::CPAN

        }

        $fact .= "\n";
    }

    return($fact);

}

# Returns an array of 24 random facts
sub random_jackbauer_facts
{
    my @facts = ();
    my $url = URL . '/rss.php';
    my $tries = 5;
    my %seen;

    while ($tries-- > 0 && @facts < 24) {
        my %result;
        my $feed = LWP::Simple::get($url);
        XML::RSSLite::parseRSS(\%result, \$feed);

lib/Acme/24.pm  view on Meta::CPAN

    }

    if (@facts && scalar(@facts) > 24) {
        splice(@facts, 24);
    }

    return(\@facts);
}

# Build a database of Jack Bauer facts
sub collect_facts
{
    my($self, $file) = @_;
    $file ||= './jackbauer.txt';
    my $new_facts = $self->random_jackbauer_facts();
    return unless $new_facts;
    open(my $fh, '>>' . $file) or return;
    for(@$new_facts)
    {
        print $fh $_, "\n%\n";
    }



( run in 0.259 second using v1.01-cache-2.11-cpan-a5abf4f5562 )