NAME
XML::RSS::Feed - Encapsulate RSS XML New Items Watching
SYNOPSIS
A quick and dirty non-POE example that uses a blocking sleep. The magic is in the late_breaking_news method that returns only headlines it hasn't seen.
use XML::RSS::Feed;
use LWP::Simple qw(get);
my $feed = XML::RSS::Feed->new(
url => "http://www.jbisbee.com/rdf/",
name => "jbisbee",
delay => 10,
debug => 1,
tmpdir => "/tmp", # optional caching
);
while (1) {
$feed->parse(get($feed->url));
print $_->headline . "\n" for $feed->late_breaking_news;
sleep($feed->delay);
}
ATTENTION! - If you want a non-blocking way to watch multiple RSS sources with one process use POE::Component::RSSAggregator.
CONSTRUCTOR
- XML::RSS::Feed->new( url => $url, name => $name )
-
- Required Params
-
- name
-
Identifier for the RSS feed.
- url
-
The URL to the RSS feed
- Optional Params
-
- delay
-
Number of seconds between updates (defaults to 600)
- tmpdir
-
Optional directory to cache a feed Storable file to keep persistance between instances.
- debug
-
Boolean value to turn debuging on.
- headline_as_id
-
Boolean value to use the headline as the id when URL isn't unique within a feed.
- hlobj
-
A class name sublcassed from XML::RSS::Headline
METHODS
- $feed->parse( $xml_string )
-
pass in a xml string to parse with XML::RSS and then call $feed->process() to process the results.
- $feed->process( $items, $title, $link )
- $feed->process( $items, $title )
- $feed->process( $items )
-
Calls pre_process, process_items, post_process, title, and link methods to process the parsed results of an RSS XML feed.
- $feed->process_items( $items )
-
Turn an array refs of hash refs into XML::RSS::Headline objects and added to the internal list of headlines.
- $feed->create_headline( %args)
-
Create a new XML::RSS::Headline object and add it to the interal list. Check XML::RSS::Headline->new() for acceptable values for %args.
- $feed->headlines
-
Returns an array or array reference (based on context) of XML::RSS::Headline objects
- $feed->late_breaking_news
-
Returns an array or the number of elements (based on context) of the latest XML::RSS::Headline objects.
- $feed->set_last_updated
- $feed->set_last_updated( Time::HiRes::time )
-
Set the time of when the feed was last processed. If you pass in a value it will be used otherwise calls Time::HiRes::time.
- $feed->last_updated_hires
-
The time (in epoch seconds and milliseconds) of when the feed was last processed.
SET/GET ACCESSOR METHODS
- $feed->init
- $feed->init( $bool )
-
init is used so that we just load the current headlines and don't return all headlines. in other words we initialize them. Takes a boolean argument.
- $feed->link
- $feed->link( $rss_channel_url )
-
The url in the RSS feed with a link back to the site where the RSS feed came from.
- $feed->url
- $feed->url( $url )
-
The url in the RSS feed with a link back to the site where the RSS feed came from.
- $feed->headline_as_id
- $feed->headline_as_id( $bool )
-
Within some RSS feeds the URL may not always be unique, in these cases you can use the headline as the unique id. The id is used to check whether or not a feed is new or has already been seen.
- $feed->hlobj
- $feed->hlobj( $class )
-
Ablity to change use a subclass XML::RSS::Headline package to encapsulate the RSS headlines. (See Perl Jobs example in XML::RSS::Headline). This should just be the package name
- $feed->tmpdir
- $feed->tmpdir( $tmpdir )
-
Temporay directory to store cached RSS XML between instances for persistance.
- $feed->max_headlines
- $feed->max_headlines( $integer )
-
The maximum number of headlines you'd like to keep track of. (0 means infinate)
DEPRECATED METHODS
- $feed->failed_to_fetch
-
This should was deprecated because, the object shouldn't really know anything about fetching, it just processes the results. This method currently will always return false
- $feed->failed_to_parse
-
This method was deprecated because, $feed->parse now returns a bool value. This method will always return false
AUTHOR
COPYRIGHT
- This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
- The full text of the license can be found in the LICENSE file included with this module.