英文かひらがなを含むエントリーのみの抽出

bloglinesでのキーワード検索がはてなより広範囲な為、早速乗り換えました。

しかし、2バイト文字の判定は難しいらしく、言語を日本語にしても他のアジアの漢字圏のFeedも混ざってきます*1。そこで、英文のみかひらがながあるエントリーのみ残すフィルタを作成しました。

正規表現こちらを参考にしました。


ここでもruleとして同じようなものが公開されています。が、英文のみのエントリーも削除してしまうのでFilterとして実装してみました*2

 package Plagger::Plugin::Filter::JapaneseHiragana;
use strict;
use base qw( Plagger::Plugin );

our $VERSION = '0.1';

sub register {
my($self, $context) = @_;
$context->register_hook(
$self,
'update.feed.fixup' => \&filter,
);
}

sub filter {
my($self, $context, $args) = @_;

for my $entry ($args->{feed}->entries) {
my $body = $entry->body;
if ($body =~ /\p{InCJKUnifiedIdeographs}/ && $body !~ /\p{InHiragana}/) {
$context->log(info => "Strip entry " . $entry->link);
$args->{feed}->delete_entry($entry);
}
}
}

1;

*1:その点Googleはすばらしい、検索結果に対象言語以外はほとんど混ざらない

*2:ルールはconfig.yamlが複雑になるのであまり使いたく無い