Merge branch 'master' of git.shadowcat.co.uk:XML-Feed
[catagits/XML-Feed.git] / eg / check_feed.pl
1 use strict;
2 use warnings;
3 use v5.10;
4
5 =head1 DESCRIPTION
6
7 Given a URL of an Atom or RSS feed or a filename of an already downloaded
8 feed, this script will try to parse it and print out what it understands
9 from the feed.
10
11 =cut
12
13 use XML::Feed;
14
15 my $src = shift;
16
17 die "Usage: $0 FILE|URL\n" if not $src;
18
19 my $source = $src;
20 if ($src =~ m{^https?://}) {
21         $source = URI->new($src);
22 } else {
23         if (not -f $source) {
24                 die "'$source' does not look like a URL and it does not exist on the file-system either.\n";
25         }
26 }
27
28 my $feed = XML::Feed->parse( $source ) or die XML::Feed->errstr;
29 say 'Title:     ' . ($feed->title     // '');
30 say 'Tagline:   ' . ($feed->tagline   // '');
31 say 'Format:    ' . ($feed->format    // '');
32 say 'Author:    ' . ($feed->author    // '');
33 say 'Link:      ' . ($feed->link      // '');
34 say 'Base:      ' . ($feed->base      // '');
35 say 'Language:  ' . ($feed->language  // '');
36 say 'Copyright: ' . ($feed->copyright // '');
37 say 'Modified:  ' . ($feed->modified  // ''); # DateTime object
38 say 'Generator: ' . ($feed->generator // '');
39
40 for my $entry ($feed->entries) {
41         say '';
42         say '    Link:      ' . ($entry->link          // '');
43         say '    Author:    ' . ($entry->author        // '');
44         say '    Title:     ' . ($entry->title         // '');
45         say '    Caregory:  ' . ($entry->category      // '');
46         say '    Id:        ' . ($entry->id            // '');
47         say '    Issued:    ' . ($entry->issued        // ''); # DateTime object
48         say '    Modified:  ' . ($entry->modified      // ''); # DateTime object
49         say '    Lat:       ' . ($entry->lat           // '');
50         say '    Long:      ' . ($entry->long          // '');
51         say '    Format:    ' . ($entry->format        // '');
52         say '    Tags:      ' . ($entry->tags          // '');
53         say '    Enclosure: ' . ($entry->enclosure     // '');
54         say '    Summary:   ' . ($entry->summary->body // '');
55         say '    Content:   ' . ($entry->content->body // '');
56 }
57