(明らかに途上)JRAのニュースを引っ張ってくるためのplagger設定ファイル

引っこ抜くメインの設定

assets/plugin/Filter-EntryFullText辺りに
jra.yamlを作成

# 2007-10-08
author: senchou
custom_feed_handle: http://www\.jra\.go\.jp/
custom_feed_follow_link: .*?(/news/\d{6}/\d{6}|/datafile/).*?\.html
handle: http://www\.jra\.go\.jp/(news|datafile).*?.html
extract_xpath:
  body: /html/body/table//tr/td/table[@width="793"][4]

リンクURLの修正

assets/plugin/Filter-TruePermalink辺りに
jra_datafile.yamlを作成

author: senchou
match: http://www\.jra\.go\.jp/\.\./datafile/
rewrite: s!http://www\.jra\.go\.jp/\.\./datafile/!http://www\.jra\.go\.jp/datafile/!

config.yaml

RSSを吐き出すための設定。jra2rss.yamlなどで保存。
実行は plagger -c /Users/tbce/jra2rss.yaml みたいな感じで。

global:
  timezone: Asia/Tokyo
  
plugins:
  - module: Subscription::Config
    config:
      feed: http://www.jra.go.jp/
  - module: Filter::TruePermalink
  - module: Filter::EntryFullText

  - module: Publish::Feed
    config:
      dir: /Users/senchou/horse/rss
      format: RSS
      filename: jra.rss

データ重複しまくるけど、Gmailで見る事も可能。
module: Publish周りを修正。
Publish::FeedとPublish::Gmailを併記すれば、RSSを作ると同時にメール発射になる。

  - module: Publish::Gmail
    config:
      mailto: *****+jra@gmail.com
      mailfrom: *****+jra@gmail.com
      mailroute:
        via: smtp_tls
        host: smtp.gmail.com:587
        username: *****@gmail.com
        password: *************

補足(というか言い訳)

  • テーブルを丸ごと引っこ抜いているので色々エラい事になってしまっている。修正課題
  • 日付情報が入っていない。面倒で、、、修正課題
  • JRARSSを取得した上でFilter::EntryFullText噛まそうとすると失敗する。Filter-EntryFullTextに書いてある正規表現が無茶苦茶なのが原因だと思う。よく知らんもんで、、、修正課題
  • JRAのサイトはテーブルレイアウトの素敵HTMLで、HTMLソースを目で追うと悲惨な事になるので、XPathを使って引っこ抜いている。Firefoxの拡張XPath Checkerの出番。その場で抽出結果を見ながら弄れる。
  • XPath Checkerだと/html/body/table/tbody/tr/td/table[4]/tbody/tr/tdで抽出出来るけど、これだとplaggerの方で失敗。何種類か試して/html/body/table//tr/td/table[@width="793"][4]にした。
  • 上記のXPath設定だとプレレーティングページの結果がおかしい。修正課題
  • Filter-TruePermalink。ブラウザでアクセスする場合、http://www.jra.go.jp/../datafile/http://www.jra.go.jp/datafile/に飛ぶ。ブラウザが直してるのかリダイレクトされてるのかは知らん。そのままではplaggerでは動かなかった。
  • 出力はRSS出力、Gmail出力だけじゃなくて、多様な方法がある。試してないだけ。