App-FeedDeduplicator

 view release on metacpan or  search on metacpan

lib/App/FeedDeduplicator/Aggregator.pm  view on Meta::CPAN

    method aggregate {

        for (@$feeds) {
            my $response = $ua->get($_->{feed});
            unless ($response->is_success) {
              warn "$_->{feed}\n";
              warn $response->status_line, "\n";
              next;
            }

            my $feed = XML::Feed->parse(\$response->decoded_content);
            unless ($feed) {
              warn "Unable to parse $_->{feed}\n";
              next;
            }

            for my $entry ($feed->entries) {
                push @$entries, {
                    entry => $entry,
                    feed => $_,
                }

lib/App/FeedDeduplicator/Deduplicator.pm  view on Meta::CPAN

        $deduplicated = \@result;
    }

    method find_canonical ($entry) {
        my $link = $entry->link;
        return unless $link;

        my $response = $ua->get($link);
        return unless $response->is_success;

        my $tree = HTML::TreeBuilder::XPath->new_from_content($response->decoded_content);
        my $node = $tree->findnodes('//link[@rel="canonical"]')->[0];

        return $node ? URI->new($node->attr('href'))->as_string : undef;
    }
}

=head1 AUTHOR

Dave Cross <dave@perlhacks.com>



( run in 0.238 second using v1.01-cache-2.11-cpan-179a2ef0c17 )