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

活動日誌


2006-09-16

[Plagger]Preprocess

Plagger でログインが必要なページにアクセスするには、cookie のファイルを用意して

global:
  user_agent:
    cookies: /path/to/cookie-file

とすればいい。

しかし、ログインの寿命が短いページだと、このファイルを頻繁に作りなおさないといけない。

ということで、

plugins:
  - module: Preprocess
    config:
      command: /path/to/make-cookie

みたいな感じでコマンドを用意すると、フィードの処理に先立ってコマンドが実行されるような 仕組みがあるといいんじゃないかと思った。

% /path/to/make-cookie; plagger

すればいいというのはまぁそうなんだけど、plagger で完結できるというのはよさげ。

cookie をパイプから読む

……と Preprocess の話を書いてて思ったが、cookies がパイプから読めるようになればそれでもいいのか。

cookie をパイプから読むようにしても警告を出なくするパッチ。

Index: lib/Plagger/Cookies.pm
===================================================================
--- lib/Plagger/Cookies.pm      (リビジョン 1692)
+++ lib/Plagger/Cookies.pm      (作業コピー)
@@ -21,7 +21,7 @@
         Plagger->context->log(debug => "$conf->{file} => $impl");
         $impl->require or Plagger->context->error("Error loading $impl: $@");

-        if ($conf->{file} && !-e $conf->{file}) {
+        if ($conf->{file} && !-e $conf->{file} && $conf->{file} !~ /\|$/) {
             Plagger->context->log(warn => "$conf->{file}: $!");
         }

config.yaml

 global:
   user_agent:
     cookies:
       file: 'cat ~/.w3m/cookie |'
       type: w3m

(もちろん、実際には cookie を作るコマンドを書く)

[Plagger]同人ど〜らく

config.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www.doujingame.com/
  - module: CustomFeed::Config
  - module: Filter::Rule
    rule:
      module: Deduped
      compare_body: 1
  - module: Filter::FindEnclosures
  - module: Filter::BreakEntriesToFeeds

assets/plugins/CustomFeed-Config/doujingame.yaml

author: Kouhei Yanagita
match: http://www\.doujingame\.com/
extract: <tr>[ \r\n]*<td bgcolor=#c7e3ff align=left valign=top><img src="img/kabe03.gif" width=14 height=14></td>[ \r\n]*<td bgcolor=#c7e3ff align=left valign=top><font size=4 style="font-size:16px">[ \r\n]*<b>.*?<u>(\d\d?).*?(\d\d?).*?</u>.*?</b></font></td>[ \r\n]*<td bgcolor=#c7e3ff align=left valign=top><img src="img/kabe03.gif" width=14 height=14></td>[ \r\n]*</tr>(.*?)<tr>[ \r\n]*<td bgcolor=#c7e3ff align=center valign=top colspan=3><hr size=1 width=94%></td>[ \r\n]*</tr>(?=[ \r\n]*<tr>[ \r\n]*<td bgcolor=#c7e3ff align=left valign=top><img src="img/kabe03.gif" width=14 height=14></td>[ \r\n]*(?:<td bgcolor=#c7e3ff align=left valign=top><font size=4 style="font-size:16px">|<td bgcolor=#c7e3ff align=left valign=top>[ \r\n]*<table border=0 bgcolor=#c7e3ff width=100%><form action="./event/form/form_top.php" method="post" target="_blank">))
extract_capture: month day body
extract_after_hook: $data->{body} = '<table border=0 cellpadding=3 cellspacing=0>' . $data->{body} . '</table>'; $data->{title} = $data->{month} . '/' . $data->{day}; $data->{link} = 'http://www.doujingame.com/#' . $data->{title}

が必要です。


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-15) 最新 次の日記(2006-09-18)»