トップ «前の日記(2006-09-23) 最新 次の日記(2006-09-30)» 編集

活動日誌


2006-09-24

[Plagger]EntryFullText で、URI::Fetch の NoNetwork を設定できるようにする

Filter::EntryFullText はエントリの全文を取得します。 URI::Fetch の引数として NoNetwork に 3 時間を渡しているので、 キャッシュがあれば 3 時間はサーバへのアクセスは発生しません。

3 時間を過ぎた場合でも、If-Modified-Since 付きでアクセスするので 毎回ページをダウンロードしてくることにはならないのですが、 それでもエントリが 100 個あったとすると、 100 回のアクセスが発生してしまいます。

1 回取得したエントリは更新されないと仮定してよい場合、 NoNetwork の値を十分長く設定できると、サーバへのアクセスが発生しないのでよさげです。

というわけで、NoNetwork の値を設定できるようにしました。

Index: lib/Plagger/Plugin/Filter/EntryFullText.pm
===================================================================
--- lib/Plagger/Plugin/Filter/EntryFullText.pm  (リビジョン 1698)
+++ lib/Plagger/Plugin/Filter/EntryFullText.pm  (作業コピー)
@@ -106,7 +106,7 @@
     }

     # NoNetwork: don't connect for 3 hours
-    my $res = $self->{ua}->fetch( $args->{entry}->permalink, $self, { NoNetwork => 60 * 60 * 3 } );
+    my $res = $self->{ua}->fetch( $args->{entry}->permalink, $self, { NoNetwork => $self->conf->{no_network} || 60 * 60 * 3 } );
     if (!$res->status && $res->is_error) {
         $self->log(debug => "Fetch " . $args->{entry}->permalink . " failed");
         return;

Filter::Rule は Filter::EntryFullText より後に実行されるので アクセスの低減には効果ありません。

[Plagger]Publish::Feed の RSS だと author は nobody@example.com を変更できないっぽい

括弧付きで名前は入れられるけど、メールアドレスは nobody@example.com がソースに埋めこまれてて変更できないっぽい。

[Plagger]SmartFeed::All は各エントリの permalink で重複を削る

よって、permalink がエントリごとに一意についていないと正しく動かない。

[Plagger]CustomFeed::Config 修正

http://plagger.g.hatena.ne.jp/Seacolor/20060921/1158820398

かっこの中に日本語を使ったときにマッチがうまくいかなかったので修正。

--- Config.pm   2006-09-23 16:28:40.079617696 +0900
+++ local/plagger/lib/Plagger/Plugin/CustomFeed/Config.pm       2006-09-24 19:41:15.876752960 +0900
@@ -131,7 +131,7 @@
             if ($content =~ /$extract/sg) {
                 $cur_pos = pos $content;
                 my $str = substr($content, $prev_pos, length($content));
-                if (my @match = $str =~ /$plugin->{extract}/s) {
+                if (my @match = $str =~ /$extract/s) {
                     my @capture = split /\s+/, $plugin->{extract_capture};
                     for my $m (@match) {
                         my $val = shift @capture;

2005|02|03|04|05|06|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|10|
2008|04|10|
2009|10|
2010|05|08|
2012|01|02|03|
2014|01|
2022|05|
トップ «前の日記(2006-09-23) 最新 次の日記(2006-09-30)»