summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--feeder.pl10
-rw-r--r--lib/Feed/AuthorName.pm30
-rw-r--r--lib/Feed/Printer.pm2
3 files changed, 40 insertions, 2 deletions
diff --git a/feeder.pl b/feeder.pl
index 5664d4c..8a96805 100644
--- a/feeder.pl
+++ b/feeder.pl
@@ -13,7 +13,13 @@ log4perl.appender.Screen.layout = PatternLayout
log4perl.appender.Screen.layout.ConversionPattern = [%d{ISO8601}] (%c) %m{chomp}%n
LOG
-my $feed_class = Feed->with_traits('Printer','FixDateTime','DeDupe');
+my $feed_class = Feed->with_traits(
+ 'Printer',
+ 'FixDateTime',
+ 'DeDupe',
+ 'AuthorName',
+);
+
sub feed {
my (%args) = @_;
my $feed = $feed_class->new({
@@ -25,3 +31,5 @@ sub feed {
feed(uri=>'http://www.gentoo.org/rdf/en/gentoo-news.rdf');
feed(uri=>'http://feeds2.feedburner.com/sydneypadua/yBZX');
+feed(uri=>'http://oglaf.com/feeds/rss/');
+feed(uri=>'http://feeds.gawker.com/io9/full');
diff --git a/lib/Feed/AuthorName.pm b/lib/Feed/AuthorName.pm
new file mode 100644
index 0000000..ae883b2
--- /dev/null
+++ b/lib/Feed/AuthorName.pm
@@ -0,0 +1,30 @@
+package Feed::AuthorName;
+use Moose::Role;
+use 5.016;
+use namespace::autoclean;
+use Email::Address;
+use Try::Tiny;
+
+requires 'process_entry';
+
+before process_entry => sub {
+ my ($self,$entry) = @_;
+
+ $self->log->trace('before process_entry - begin');
+
+ my $author = $entry->author;
+
+ return unless $author && $author =~ /\@/;
+
+ try {
+ my $address = (Email::Address->parse($author))[0];
+ if (my $name = $address->name) {
+ $entry->author($name);
+ }
+ };
+
+ $self->log->trace('before process_entry - end');
+};
+
+1;
+
diff --git a/lib/Feed/Printer.pm b/lib/Feed/Printer.pm
index 7fd2f65..89dd93f 100644
--- a/lib/Feed/Printer.pm
+++ b/lib/Feed/Printer.pm
@@ -16,7 +16,7 @@ sub process_entry {
$self->log->trace('process_entry - begin');
- for my $f (qw(id title link issued modified)) {
+ for my $f (qw(id author title link issued modified)) {
say " $f:",$entry->$f//'<undef>';
}
say $entry->content->body;