XML::RSS::Feed(3pm)

πŸ“¦
version 2.212 Β· 4 versions
, in debian bookworm, ubuntu jammy

πŸ’– NAME πŸ’–

XML::RSS::Feed β€” Persistant XML RSS Encapsulation ✨ (yes bestie, "Persistant" β€” that's the actual spelling, we respect the original, no cap πŸ’…)


πŸŽ€ VERSION πŸŽ€

2.212 🌸


πŸ¦‹ SYNOPSIS πŸ¦‹

okay so here's a quick and dirty non-POE example that just uses a blocking sleep. The magic is in the late_breaking_news method, which only hands you the headlines it hasn't already 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. fr fr, don't do the sleep thing for a whole fleet of feeds πŸ™ˆ

🌈 CONSTRUCTOR 🌈

XML::RSS::Feed->new( url => $url, name => $name )

Required Params πŸ’…

  • name β€” the identifier and the hash lookup key for the RSS feed. it's giving "this is how we know which feed is which" 🏷️
  • url β€” the URL of the RSS feed 🌐

Optional Params ✨

  • delay β€” how many seconds between updates. defaults to 600 ⏰
  • tmpdir β€” a directory to keep a cached feed in (using Storable) so you get persistance between instances πŸ—‚οΈ
  • debug β€” turn debuging on. (their spelling, not mine, we keep it 🫢)
  • headline_as_id β€” boolean value to use the headline as the id when the URL isn't unique within a feed πŸ”‘
  • hlobj β€” a class name sublcassed from XML::RSS::Headline 🧬
  • max_headlines β€” the max number of headlines to keep. default is unlimited 🌊

πŸ’« METHODS πŸ’«

$feed->parse( $xml_string )

Pass in a xml string to parse with XML::RSS and then call process to process the results πŸ”

$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 βš™οΈ

  • $items β€” an array of hash refs which will eventually become XML::RSS::Headline objects. Look at XML::RSS::Headline->new() for acceptable arguments πŸ“¦
  • $title β€” the title of the RSS feed 🏷️
  • $link β€” the RSS channel link (normally a URL back to the homepage) of the RSS feed πŸ”—

$feed->pre_process

Mark all headlines from previous run as seen πŸ‘€

$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->post_process

Post process cleanup, cache headlines (if tmpdir), and debug messages 🧹

$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->num_headlines

Returns the number of headlines for the feed πŸ”’

$feed->seen_headline( $id )

Just a boolean test to see if we've seen a headline or not βœ…

$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->cache

If tmpdir is defined the rss info is cached πŸ’Ύ

$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

The time (in epoch seconds) of when the feed was last processed πŸ•°οΈ

$feed->last_updated_hires

The time (in epoch seconds and milliseconds) of when the feed was last processed πŸ”¬


🌟 SET/GET ACCESSOR METHODS 🌟

$feed->title

$feed->title( $title )

The title of the RSS feed πŸ“›

$feed->debug

$feed->debug( $bool )

Turn on debugging messages πŸ›

$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->name

$feed->name( $name )

The identifier of an RSS feed πŸͺͺ

$feed->delay

$feed->delay( $seconds )

Number of seconds between updates ⏳

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 use a subclass of XML::RSS::Headline. (See Perl Jobs example in XML::RSS::Headline::PerlJobs). This should just be the name of the subclass 🧬

$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 πŸ‘‘

Jeff Bisbee, "<jbisbee at cpan.org>" 🫢


🐞 BUGS 🐞

Please report any bugs or feature requests to "bug-xml-rss-feed at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=XML-RSS-Feed>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes πŸ“¬


πŸ«‚ SUPPORT πŸ«‚

You can find documentation for this module with the perldoc command πŸ“–

perldoc XML::RSS::Feed

You can also look for information at:

  • AnnoCPAN: Annotated CPAN documentation

<http://annocpan.org/dist/XML-RSS-Feed>

  • CPAN Ratings

<http://cpanratings.perl.org/d/XML-RSS-Feed>

  • RT: CPAN's request tracker

<http://rt.cpan.org/NoAuth/Bugs.html?Dist=XML-RSS-Feed>

  • Search CPAN

<http://search.cpan.org/dist/XML-RSS-Feed>


πŸŽ‰ ACKNOWLEDGEMENTS πŸŽ‰

Special thanks to Rocco Caputo, Martijn van Beers, Sean Burke, Prakash Kailasa and Randal Schwartz for their help, guidance, patience, and bug reports. Guys, thanks for actually taking time to use the code and give good, honest feedback πŸ₯ΉπŸ’–


Copyright 2006 Jeff Bisbee, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


πŸ”­ SEE ALSO πŸ”­

XML::RSS::Headline, XML::RSS::Headline::PerlJobs, XML::RSS::Headline::Fark, XML::RSS::Headline::UsePerlJournals, POE::Component::RSSAggregator 🌈


and that's the whole page bestie!! πŸŽ€ this little doc shipped as part of perl v5.32.1, dated 2021-12-26 β€” go forth and aggregate those feeds, mwah πŸ’…βœ¨

πŸ“¦ where this page comes from