NAME

Mojo::Feed - Mojo::DOM-based parsing of RSS & Atom feeds

SYNOPSIS

use Mojo::Feed;
use Mojo::File qw(path);

my $feed = Mojo::Feed->new->parse(file => path("atom.xml"));
print $feed->title, "\n",
  $feed->items->map('title')->join("\n");

$feed = Mojo::Feed->new( body => $string );
$feed = Mojo::Feed->new( url => $rss_url );

my $feed = Mojo::Feed->new(
  url => "https://github.com/dotandimet/Mojo-Feed/commits/master.atom");
say $feed->title;
$feed->items->each(
  sub { say $_->title, q{ }, Mojo::Date->new($_->published); });

DESCRIPTION

Mojo::Feed is an Object Oriented module for identifying, fetching and parsing RSS and Atom Feeds. It relies on Mojo::DOM for XML/HTML parsing. Date parsing is done with HTTP::Date.

Mojo::Feed represents the parsed RSS/Atom feed; you can construct it by setting an XML string as the body attribute, by setting the file or url attributes to a Mojo::File or Mojo::URL respectively, or by using a Mojo::Feed::Reader object.

ATTRIBUTES

Mojo::Feed implements the following attributes.

body

The original decoded string of the feed.

dom

The parsed feed as <Mojo::DOM> object.

source

The source of the feed; either a Mojo::File or Mojo::URL object, or undef if the feed source was a string.

title

Returns the feed's title.

description

Description of the feed, filled from channel description (RSS), subtitle (Atom 1.0) or tagline (Atom 0.3)

Web page URL associated with the feed

items

Mojo::Collection of Mojo::Feed::Item objects representing feed news items

subtitle

Optional feed description

author

Name from author, dc:creator or webMaster field

published

Time in epoch seconds (may be filled with pubDate, dc:date, created, issued, updated or modified)

url

A Mojo::URL object from which to load the file. If set, it will set source. The url attribute may change when the feed is loaded if the user agent receives a redirect.

file

A Mojo::File object from which to read the file. If set, it will set source.

METHODS

Mojo::Feed inherits all methods from Mojo::Base and implements the following new ones.

new

my $feed = Mojo::Feed->new;
my $feed = Mojo::Feed->new( body => $string);

Construct a new Mojo::Feed object.

to_hash

my $hash = $feed->to_hash;
print $hash->{title};

Return a hash reference representing the feed.

to_string

Return a XML serialized text of the feed's Mojo::DOM node. Note that this can be different from the original XML text in the feed.

is_valid

Returns true if the top-level element of the DOM is a valid RSS (0.9x, 1.0, 2.0) or Atom tag. Otherwise, returns false.

feed_type

Detect type of feed - returns one of "RSS 1.0", "RSS 2.0", "Atom 0.3", "Atom 1.0" or "unknown"

CREDITS

Dotan Dimet

Mario Domgoergen

Some tests adapted from Feed::Find and XML:Feed, Feed auto-discovery adapted from Feed::Find.

LICENSE

Copyright (C) Dotan Dimet.

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

AUTHOR

Dotan Dimet <dotan@corky.net>