As an XML/RSS exercise, I wrote up some code that converts the latest questions from the perlmonks Newest Nodes XML Feed to RSS. It's quick and dirty, but works and a script using it is now in my crontab (hourly). (It parses the authors, too, but I haven't done anything with that yet.) I thought other users (or the gods) might be interested in seeing it. People should be able to easily modify this example to pick out other parts of the newest nodes feed if they desire.
use warnings; use strict; use LWP::UserAgent; use XML::Simple; use XML::RSS; # pass in the URL for the newest nodes page, i.e. # http://perlmonks.org/index.pl?node_id=30175 sub process_xml { my $url = shift; my %authors; my @questions; my $browser = LWP::UserAgent->new(); $browser->timeout(30); my $response = $browser->get($url); die unless $response->is_success; my $tree = XMLin( $response->content ); foreach my $node ( @{ $tree->{AUTHOR} } ) { $authors{ $node->{'node_id'} } = $node->{'content'}; } foreach my $node ( @{ $tree->{NODE} } ) { my $item = { author => $authors{ $node->{'author_user'} }, node_id => $node->{'node_id'}, subject => $node->{'content'} }; push @questions, $item if $node->{'nodetype'} eq 'perlquestion +'; } my $rss = new XML::RSS (version => '1.0'); $rss->channel( title => "perlmonks newest questions", link => "http://perlmonks.org", description => "perlmonks newest questions", ); for my $item ( @questions ) { $rss->add_item( title => $item->{subject}, link => "http://perlmonks.org/index.pl?node_id=" . +$item->{node_id} ); } print $rss->as_string(); }
-xdg
Code posted by xdg on PerlMonks is public domain. It has no warranties, express or implied. Posted code may not have been tested. Use at your own risk.
DG: Updated to add strict and warnings to set a good example for new monks.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Code for Perlmonks XML to RSS
by Vautrin (Hermit) on Mar 30, 2004 at 17:09 UTC | |
by xdg (Monsignor) on Mar 30, 2004 at 21:02 UTC | |
Re: Code for Perlmonks XML to RSS
by exussum0 (Vicar) on Mar 30, 2004 at 16:50 UTC |