FFXIのビシージ情報の更新をIRCで知りたい!

Plaggerです。試してみました。
ゴールは、FFXIの集団対モンスター戦であるビシージで、いつどのモンスター軍が攻めてくるかを報告ベースで予想時間を表示してくれるビシージ状況報告ページです。

下準備

  • TiarraをTopiaさんの開発ツリーのものにupgrade
    • general.control-socket-name を適当に設定
    • 設定ファイルから System::SendMessage を有効化

ffxi_besieged.yaml

global:
  assets_path: assets
  timezone: Asia/Tokyo
  user_agent:
    agent: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
  log:
    level: debug
  cache:
    expires: 60

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: "http://besieged.hp.infoseek.co.jp/cgi-bin/svr_stat.cgi?svr=0"

  - module: CustomFeed::Config

  - module: Filter::Rule
    rule:
      module: Deduped
      path: cache/ffxi_besieged.tmp
      compare_body: 1

  - module: Notify::Tiarra
    config:
      socketname: bot
      channel: #example
      use_notice: 1

  - module: Publish::Gmail
    config:
      mailto: nekoruri@example.jp
      mailfrom: nekoruri@example.jp
      mailroute:
        via: smtp
        host: localhost

assets/plugins/CustomFeed-Config/ffxi_besieged.yaml

match: http://besieged\.hp\.infoseek\.co\.jp/cgi-bin/svr_stat\.cgi\?svr=\d+
extract: "<th class=he2>([^<]*)</th>[ \r\n]*<td class=td_(?:up|now)_num>([^<]*)</td>[ \r\n]*<td class=td_(?:up|now)_str>([^<]*)</td>"
extract_capture: title count date
extract_after_hook: $data->{title} .= ' ' . $data->{count} . ' (' . $data->{date} . ')'
extract_after_hook: $data->{body} = $data->{title}

syntax hilight

って?Gだけだったんですね……。

追記: body

IRCへの通知がメインなのでbody気にしてなかったんですが、なんか更新時の通知がうまくいってないようなので、とりあえずbodyにも入れてみました。これでどうかな……。試行錯誤。