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}
が必要です。