add example
Gabor Szabo [Tue, 6 Mar 2012 09:57:19 +0000 (11:57 +0200)]
eg/check_feed.pl [new file with mode: 0644]

diff --git a/eg/check_feed.pl b/eg/check_feed.pl
new file mode 100644 (file)
index 0000000..c0201f6
--- /dev/null
@@ -0,0 +1,57 @@
+use strict;
+use warnings;
+use v5.10;
+
+=head1 DESCRIPTION
+
+Given a URL of an Atom or RSS feed or a filename of an already downloaded
+feed, this script will try to parse it and print out what it understands
+from the feed.
+
+=cut
+
+use XML::Feed;
+
+my $src = shift;
+
+die "Usage: $0 FILE|URL\n" if not $src;
+
+my $source = $src;
+if ($src =~ m{^https?://}) {
+       $source = URI->new($src);
+} else {
+       if (not -f $source) {
+               die "'$source' does not look like a URL and it does not exist on the file-system either.\n";
+       }
+}
+
+my $feed = XML::Feed->parse( $source ) or die XML::Feed->errstr;
+say 'Title:     ' . ($feed->title     // '');
+say 'Tagline:   ' . ($feed->tagline   // '');
+say 'Format:    ' . ($feed->format    // '');
+say 'Author:    ' . ($feed->author    // '');
+say 'Link:      ' . ($feed->link      // '');
+say 'Base:      ' . ($feed->base      // '');
+say 'Language:  ' . ($feed->language  // '');
+say 'Copyright: ' . ($feed->copyright // '');
+say 'Modified:  ' . ($feed->modified  // ''); # DateTime object
+say 'Generator: ' . ($feed->generator // '');
+
+for my $entry ($feed->entries) {
+       say '';
+       say '    Link:      ' . ($entry->link          // '');
+       say '    Author:    ' . ($entry->author        // '');
+       say '    Title:     ' . ($entry->title         // '');
+       say '    Caregory:  ' . ($entry->category      // '');
+       say '    Id:        ' . ($entry->id            // '');
+       say '    Issued:    ' . ($entry->issued        // ''); # DateTime object
+       say '    Modified:  ' . ($entry->modified      // ''); # DateTime object
+       say '    Lat:       ' . ($entry->lat           // '');
+       say '    Long:      ' . ($entry->long          // '');
+       say '    Format:    ' . ($entry->format        // '');
+       say '    Tags:      ' . ($entry->tags          // '');
+       say '    Enclosure: ' . ($entry->enclosure     // '');
+       say '    Summary:   ' . ($entry->summary->body // '');
+       say '    Content:   ' . ($entry->content->body // '');
+}
+