plaggerでNewsIsFreeからのサイト
EntryFullTextを雛型にかいたから、いらないのもよみこんでるかも。。。
(何行か削れそうなきがするけど、これでとりあえず動いてる)
permalinkをみるべきなのか、linkをみるべきなのか????
package Plagger::Plugin::Filter::NewsIsFree; use strict; use base qw( Plagger::Plugin ); use DirHandle; use Encode; use File::Spec; use List::Util qw(first); use HTML::ResolveLink; use Plagger::Date; # for metadata in plugins use Plagger::Util qw( decode_content ); use Plagger::Plugin::CustomFeed::Simple; use Plagger::UserAgent; sub register { my($self, $context) = @_; $context->register_hook( $self, 'customfeed.handle' => \&handle, 'update.entry.fixup' => \&filter, ); } sub handle { my($self, $context, $args) = @_; my $handler = first { $_->custom_feed_handle($args) } @{ $self->{plugins} }; if ($handler) { $args->{match} = $handler->custom_feed_follow_link; return $self->Plagger::Plugin::CustomFeed::Simple::aggregate($context, $args); } } sub filter { my($self, $context, $args) = @_; if( $args->{entry}->permalink !~ /www.newsisfree.com/ ){ return; } ### my $isEntryFind=0; my $ar_entry=$args->{entry}; for my $feed_entry ($args->{feed}->entries) { if( $feed_entry->link eq $ar_entry->link ){ $isEntryFind=1; } } if( $isEntryFind eq 0 ){ # feed doesn't have this entry # this entry is deleted somewhere return; } ### my $agent = Plagger::UserAgent->new; my $res = $agent->fetch($args->{entry}->permalink, $self); return if $res->http_response->is_error; my $content = Plagger::Util::decode_content($res); my $base = $args->{entry}->permalink; while ($content =~ m!.*?x='(http://[^']*)';!g) { #' $base=($1); } if ( $base ne $args->{entry}->permalink ) { $context->log(info => "rewrite permalink to $base"); $args->{entry}->permalink($base); $args->{entry}->link($base); } return ; } 1;
config.yaml
- module: Filter::NewsIsFree