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 で完結できるというのはよさげ。
……と 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 を作るコマンドを書く)
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}
が必要です。