From bf238eb4266f4c61291b1816cafb4b322d9103e8 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 9 Dec 2012 14:08:58 +0000 Subject: extract author name for email address --- feeder.pl | 10 +++++++++- lib/Feed/AuthorName.pm | 30 ++++++++++++++++++++++++++++++ lib/Feed/Printer.pm | 2 +- 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 lib/Feed/AuthorName.pm 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//''; } say $entry->content->body; -- cgit v1.2.3