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

  }

  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 unless $node;
    return URI->new($node->attr('href'))->as_string;
  }
}

=head1 AUTHOR



( run in 0.405 second using v1.01-cache-2.11-cpan-9383018d099 )