Plagger プラグインの実行フェーズについて整理してみたので、載せておきます。
追記
はてブで「argsもあるとうれしいとおもた」というコメントがありましたので、追加してみました。
実行フェーズ | $args | フェーズの役割 | 実行例 |
---|---|---|---|
plugin.init | - | プラグインの初期化処理 | Publish::Feedでのフィード出力用ディレクトリ作成 |
subscription.load | - | フィードをPlaggerの購読リストへ登録 | Subscription::Config でのyamlで指定されたフィードURL登録 |
customfeed.handle | feed | フィードのアグリゲーション(フィードデータの取得とパース) | Aggregator::Simpleで RSS/Atomフィード取得とパース |
aggreagator.filter.feed | content | アグリゲートフェーズでのフィード変換処理 | Filter::RSSTimeZoneStringでの不正なタイムゾーンの修正 |
aggregator.entry.fixup | entry, feed, orig_entry, orig_feed | アグリゲートフェーズでのエントリ変換処理 | Filter::FeedBurnerPermalinkでのpermalink修正 |
aggregator.finalize | - | アグリゲータの後処理 | Aggregator::Xangoでのフィード取得/パース処理の並列実行開始 |
update.entry.fixup | feed, entry | アグリゲート後のエントリ変換処理 | Filter::EntryFullTextでエントリの要約を全文へ変換する処理 |
update.feed.fixup | feed | アグリゲート後のフィード変換処理 | Filter::BlogPetによるBlogPetエントリのフィードからの除去 |
update.fixup | - | update.*.fixupの後処理 | Filter::POPFileでのPOPFileセッションのクローズ |
smartfeed.init | - | スマートフィード初期化処理 | SmartFeedでのスマートフィードオブジェクトの生成 |
smartfeed.entry | feed, entry | エントリのスマートフィード処理 | SmartFeedでのエントリのコピー生成 |
smartfeed.feed | feed | フィードのスマートフィード処理 | Filter::Ruleでの条件に一致しないエントリのフィードからの除去 |
smartfeed.finalize | - | スマートフィード後処理 | SmartFeedでの生成されたスマートフィードをフィードリストへ追加 |
publish.init | - | 出力の初期化処理 | Publish::GmailでのPOP before SMTP処理 |
publish.entry.fixup | feed, entry | 出力前のエントリ変換処理 | Widget::HatenaBookmarkUsersCountでのエントリにはてなブックマークユーザ数を付加する処理 |
publish.feed | feed | フィードの出力処理 | Publish::Gmailでのメール送信 |
publish.entry | feed, entry | エントリの出力処理 | Publish::Deliciousでのdel.icio.usへのブックマーク登録 |
publish.finalize | - | 出力の後処理 | Publish::2chdatでのsubject.txtの書き出し |
plugin.finalize | - | プラグインの後処理 | Search::KinoSearchでのインデックス作成完了処理 |
searcher.search | query | Search プラグインでの検索 | Search::Grep での検索処理 |
useragent.init | ua | Plagger::UserAgent の初期化処理 | UserAgent::AuthenRequest での認証情報設定 |
useragent.request | ua, url, req | Plagger::UserAgenet のリクエスト処理の変更 | UserAgent::RequestHeader でのヘッダ追加 |
各フェーズは上の表の順番どおりに実行されます。(searcher.search と useragent.* はちょっと特殊なので順番通りではないです。)
間違いなどあればツッコミよろしくです。