Network から自分の登録した以外のエントリーを抽出するレシピ

Rule::Deduped::DBIC(*) にデータベースを指定できるようにパッチをあてました。Rule::Deduped::Base 周りも含めて重複チェック部分をこれから修正するかもしれないのでパッチはまだ未公開。Deduped 使わない方がよい気もしてきた。同じ DB を使ってネットワークの中で自分も登録しているエントリーについたコメントを抽出する方も実現できるかな。

branches/feature-server/ の方の plagger 利用 (plaggerd じゃないよ)。Plugin::Store::DBIC をコピーしてくれば trunk でも動く、と思う。

Filter::Deduped の挙動とはちょっと違うし、Filter::DBIC やら Rule::DBIC を作ったほうが素直っぽいのでその方向で書き直し。Subscribe::DBI がすでにあるみたいだし...って、これはデータベースに登録されたフィードのオリジナルの URL からエントリを取得するためのものか。名前からその動作は思いつかなかった。じゃあ、Subscription::DBIC も作るか。

  • 自分のエントリーを DB 登録するレシピ
global:
  timezone: Asia/Tokyo

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://del.icio.us/rss/naltan

  - module: Aggregator::Simple

  - module: Store::DBIC
    config:
      schema_class: Plagger::Schema::SQLite
      connect_info: [ 'DBI:SQLite:/home/nirvash/data/delicious_stored.db', ]

実際は、この後ではてブに同期させたりとかもしてるけど。

  • 自分のエントリーDB で Network をフィルタリングするレシピ
global:
  timezone: Asia/Tokyo

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://del.icio.us/rss/network/naltan

  - module: Aggregator::Simple

  - module: Filter::Rule
    rule:
      module: Deduped
      engine: DBIC
      config:
        schema_class: Plagger::Schema::SQLite
        connect_info: [ 'DBI:SQLite:/home/nirvash/data/delicious_stored.db', ]

  - module: Publish::Feed
    config:
      format: RSS
      dir: /home/nirvash/www/rss
      filename: delicious_network.rss

これを DB に突っ込んで PlaggerLDR で参照することもできるのだけど、今回は素直に LDRRSS を登録してます。Network 自身の重複チェックはあえてやりません。

  • ネットワーク内の自分が登録しているエントリについたコメント抽出
global:
  timezone: Asia/Tokyo

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://del.icio.us/rss/network/naltan

  - module: Aggregator::Simple

  - module: Filter::Rule
    rule:
      module: Expression
      expression: $args->{entry}->body_text

  - module: Filter::Rule
    config:
      keep_0_entry_feed: yes
    rule:
      module: Deduped
      engine: DBIC
      extract_duped: yes

      config:
        schema_class: Plagger::Schema::SQLite
        connect_info: [ 'DBI:SQLite:/home/nirvash/data/delicious_stored.db', ]

  - module: Publish::Feed
    config:
      format: RSS
      dir: /home/nirvash/www/rss
      filename: delicious_comment.rss

Rule::Deduped と Filter::Rule にパッチあててます。RSS を直接出力せずに一度 DB に入れて、そこから一定件数のエントリーを RSS 化したほうがいいなぁ。