| Acme-ICHC-Lolcats documentation | Contained in the Acme-ICHC-Lolcats distribution. |
Acme::ICHC::Lolcats - Retrieves the latest from ICanHasCheezburger.
use Acme::ICHC::Lolcats; my $lolcat = Acme::ICHC::Lolcats->new; my $rofl = $lolcat->getImage; open(FILE, ">rofl.jpg"); print FILE $rofl; close(FILE);
This module is designed for retreiving lolcat images from the ICanHasCheezburger RSS feed using LWP.
my $lolcat = Acme::ICHC::Lolcats->new; my $lolcat = Acme::ICHC::Lolcats->new( feedUrl => 'http://server.tld/feed.rss' ); Creates a new object for retrieval of lolcats. If a C<$feedUrl> is given, it is passed to C<< $lolcat->feedUrl >> and will be used instead of the default.
my $feedUrl = $lolcat->feedUrl; $lolcat->feedUrl($feedUrl); Gets or sets the Feed URL to use for retrieval of lolcats.
my $imageUrl = $lolcat->getImageUrl; Gets the URL for the latest image to be posted to the lolcats feed. Returns nothing on failure.
my $image = $lolcat->getImage; my $image = $lolcat->getImage($imageUrl); Uses LWP to fetch C<$imageUrl>. If none is specified, will call C<< $lolcat->getImageUrl >> and fetch that. It will return the actual image, or nothing on failure.
my $pageUrl = $lolcat->getPageUrl; Gets the URL for the latest page to be posted to the lolcats feed. Returns nothing on failure.
my $lastUpdate = $lolcat->getUpdatedTime; Gets the time and date of the last update to the lolcats feed. Returns nothing on failure.
my $rssFeed = $lolcat->feed; Uses LWP to fetch C<< $self->feedUrl >>, and returns it. Returns nothing on failure.
| Acme-ICHC-Lolcats documentation | Contained in the Acme-ICHC-Lolcats distribution. |
package Acme::ICHC::Lolcats; require LWP::UserAgent; require XML::Simple; use strict; our $VERSION=0.01;
sub new { my ($class, %args) = @_; my $self = bless({}, $class); my $defaultFeed = "http://feeds.feedburner.com/ICanHasCheezburger"; my $feedUrl = exists $args{feedUrl} ? $args{feedUrl} : $defaultFeed; $self->feedUrl ($feedUrl); return $self; }
sub feedUrl { my $self = shift; if(@_){ my $feedUrl = shift; $self->{feedUrl} = $feedUrl; } return $self->{feedUrl}; }
sub getImageUrl { my $self = shift; my $feed = $self->feed; if(!$feed){ return; } my ($imageUrl) = $feed =~ /\<media\:content url\=\"(.+?)\" medium=\"image\"\>/; return $imageUrl; }
sub getImage { my $self = shift; my $imageUrl; if(@_){ $imageUrl = shift; }else{ $imageUrl = $self->getImageUrl; } if(!$imageUrl){ return; } my $imgBrowser = LWP::UserAgent->new; my $imgResponse = $imgBrowser->get($imageUrl); if($imgResponse->is_success){ return $imgResponse->content; }else{ return; } }
sub getPageUrl { my $self = shift; my $feed = $self->feed; if(!$feed){ return; } my ($pageUrl) = $feed =~ /\<feedburner\:origLink\>(.+?)\<\/feedburner:origLink\>/; return $pageUrl; }
sub getUpdatedTime { my $self = shift; my $feed = $self->feed; if(!$feed){ return; } my ($updated) = $feed =~ /\<pubDate\>(.+?)\<\/pubDate\>/; return $updated; }
sub feed { my $self = shift; my $feedBrowser = LWP::UserAgent->new; my $feedResponse = $feedBrowser->get($self->feedUrl); if($feedResponse->is_success){ return $feedResponse->content; }else{ return; } } 1; __END__