LDR Full Feedのsiteinfoを使ってフィードを全文入りにupgradeするPlagger::Plugin::Filter::EntryFullText::SiteInfo(2008/2/27仕様変更)

LDRでgを押せば全文出てくるべんりなLDR Full Feedだけど、個人的には自作の自動抽出のをつかってるのでいいなーと思いながら指をくわえてその進化を見つめています。ただ本文XPathのsiteinfoはものすごく使えそうなので、とりあえず試しにPlaggerでただのりさせてもらうことにしました。siteinfoはキャッシュしてないのでちょっとまずいかもしれないけど、たぶんこのプラグインを使う人はほとんどいないので大丈夫でしょう。siteinfoの取得もPlagger::UAを使うようにしました。これでキャッシュできてる! と思う…。

lib/Plagger/Plugin/Filter/EntryFullText/SiteInfo.pm

元のEntryFullTextは継承して全機能がそのまま動くようになってるはずです。今つかってるconfig.yamlのmodule: Filter::EntryFullTextの行を入れ替えてください。いろいろ修正するついでによく確認してみたらEFT継承部分がちゃんと動いてなかった! 申し訳ない…。ということでこのへん真面目に実装しようとしてassets周りを読んでみたところかなりめんどくさそうなので、てっとりばやくEFTを流用するためにclass_id偽装機能をつけました。impersonateを1にするとまるでこのクラスがPPF::EntryFullTextであるかのようにふるまい、assets/plugins/Filter-EntryFullText以下にあるファイルも読むようになります。とりあえず問題はでてないんですが、しらないところでまずいことになってそうな気がするのでデフォルトでは動かないようにしておきます。EFTを完全に入れ替えて既存のassetsを変更することなく使いたい場合だけ1にしてください。
もちろんassets/plugins/Filter-EntryFullText-SiteInfoってディレクトリをつくれば大丈夫なので、EFTのfeed-upgraderを使いたい場合は下のような2つのやり方があることになります。とりあえず個人的には偽装してやってみるつもり。

  • impersonate:1にしてassets/plugins/Filter-EntryFullTextに置いたまま(こわい)
  • impersonate:0にしてassets/plugins/Filter-EntryFullText-SiteInfoを作ってassets/plugins/Filter-EntryFullTextの中身をコピーする(安全)

config.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://kawamurayukie.cocolog-nifty.com/blog/

  - module: Aggregator::Simple

  - module: Filter::EntryFullText::SiteInfo
    config:
      impersonate: 0 # これを1にするとEFTのassetsも読むけど…
      force_upgrade: 1

  - module: Publish::Gmail