Rule::Deduped::DBIC
Rule::Deduped::Baseでurlに日付を追加しているので、
http://d.hatena.ne.jp/sfujiwara/20060608/1149799538
に書いてあるソースではentryが見つからず、正しく動作しませんでした。
is_newをオーバーライドしてfind_entryの引数に日付を付けないurlが渡るように修正しました。また、useでPluginを直接ロードしていると、動的にロードするケースで困るので削除しました。
package Plagger::Rule::Deduped::DBIC; use strict; use base qw( Plagger::Rule::Deduped::Base ); sub is_new { my($self, $entry) = @_; my $exists = $self->find_entry( $entry->permalink ) or return 1; if ($self->{compare_body}) { return $exists ne $entry->digest; } else { return 0; } } sub find_entry { my($self, $url) = @_; my $c = Plagger->context; unless($self->{db}){ my $plugins = $c->{plugins}; my ($db) = grep { $_->isa('Plagger::Plugin::Store::DBIC') } @$plugins; return unless $db; $self->{db} = $db; } my $entry = $self->{db}->schema->resultset('Entry')->find({ link => $url, }); if($entry){ # XXX see Plagger::Entry::digest my $data = $entry->title . ($entry->body || ''); Encode::_utf8_off($data); return Digest::MD5::md5_hex($data); } $c->log( debug => "not found." ); return; } sub create_entry { my($self, $url, $digest) = @_; Plagger->context->log( debug => "$url stored later by Store::DBIC" ); 1; } 1;