plaggerで重複を削除しつつまとめてみる
20080406追記
わざわざモジュールを書かなくても
http://yusukebe.com/archives/07/08/09/105502.html
にて、以下の設定で同じことができることがわかりました。otsuneさん、yusukebeさん、ありがとうございます。
- module: Filter::Rule rule: - expression: $args->{entry}->{date} = undef; 1 - module: Deduped
ここまで追記20080406
ここから元の文
Deduped/DB_File.pmは便利なんだけど、
なんかの都合で同じURLだが別の時間というのになると、新規のものとして
通過してしまうので、適当にでっちあげる。
DB_File_URL
package Plagger::Rule::Deduped::DB_File_URL; use strict; use base qw( Plagger::Rule::Deduped::Base ); use DB_File; sub id_for { my($self, $entry) = @_; return $entry->permalink; } sub init { my($self, $rule) = @_; $self->{path} = $rule->{path} || Plagger->context->cache->path_to('Deduped.db'); $self->{db} = tie my %cache, 'DB_File', $self->{path}, O_RDWR|O_CREAT, 0666, $DB_HASH or Plagger->context->error("Can't open DB_File $self->{path}: $!"); } sub find_entry { my($self, $url) = @_; my $status = $self->{db}->get($url, my $value); return if $status == 1; # not found return $value; } sub create_entry { my($self, $url, $digest) = @_; $self->{db}->put($url, $digest); } 1;
Plugin/Rule/Deduped/DB_File.pm
に次のようなのを追加して、パッケージ名をかえて、適当なファイルで保存しただけ
sub id_for { my($self, $entry) = @_; return $entry->permalink; }
global: timezone: Asia/Tokyo log: level: debug cache: base: /tmp/cache plugins: - module: Subscription::Config config: feed: - url: http://del.icio.us/rss/tag/plagger - module: SmartFeed rule: module: Deduped engine: DB_File_URL path: /tmp/deduped_urlonly.db - module: Publish::Feed rule: expression: $args->{feed}->id eq 'smartfeed:Deduped' config: format: RSS dir: /tmp/feed filename: rss_%t.rss