package Plagger::Plugin::Filter::AtomLinkRelated; use strict; use base qw( Plagger::Plugin ); use List::Util qw(first); sub register { my($self, $context) = @_; $context->register_hook( $self, 'aggregator.entry.fixup' => \&fixup, ); } # Note: Bloglines doesn't return link rel="related" value in its API and we're doomed sub fixup { my($self, $context, $args) = @_; # Use Atom's link rel="related" if (my $orig_link = $args->{orig_feed}->format eq 'Atom') { my $rel = first { $_->rel eq 'related' } $args->{orig_entry}->{entry}->link; # XXX uses XML::Feed internal if ($rel) { $args->{entry}->link($rel->href); $context->log(info => "Link rewritten to " . $rel->href); } } } 1; __END__ =head1 NAME Plagger::Plugin::Filter::AtomLinkRelated - Use link rel="related" as entry link =head1 SYNOPSIS - module: Filter::AtomLinkRelated =head1 DESCRIPTION This plugin looks for Atom link elements with C<< rel="related" >> relationship set. This way you can use original link defined in Social Bookmark atom feeds like L. Note that this plugin only works with Plagger's own aggregator like I plugin, since Bloglines API doesn't return related links in its response data. =head1 AUTHOR Tatsuhiko Miyagawa =head1 SEE ALSO L =cut