CustomFeedプラグインの書き方
イベントハンドラ
2種類
- customfeed.handle
- subscription.load
config.yamlのmodule: Subscription::Configのfeed urlを使う場合はcustomfeed.handleを使いましょう。
プラグインコード上でいえば、「$args->{feed}->url」を参照するなら customfeed.handle、不要ならば subscription.load となります。
※オレオレプラグインならばとりあえずsubscription.loadで作ればいいんじゃないかな
イベントハンドラ内で feed 生成
「Plagger::Feed->new」で feed をつくり、イベントハンドラの最初の引数へ追加する。
とうぜん、feed 内の各 entry も生成する。(Plagger::Entry->new)
entryの作り方
- どっかからデータを取ってきて feed 化する(殆どがこのパターン)
- どうにかして作る(ランダムで出力するとか)
※ RSS を出力するように作る(わからない人は RSSの中をエディタで見てね)
my $feed = Plagger::Feed->new; $feed->type('feedの種別(差分チェック用?)'); $feed->title('feed タイトル'); $feed->link(主にトップページURL); my $entry = Plagger::Entry->new; $entry->title(タイトル); $entry->link(アイテムのpermalink); $entry->date(日時); ↑Plagger::Dateを使おう $entry->body(内容); $feed->add_entry($entry); $context->update->add($feed);
こんな感じで。
注意事項
- 処理失敗したときはログ出ししましよう
my $ua = Plagger::UserAgent->new; my $res = $ua->fetch($url, $self); if ($res->is_error) { $context->log(error => "GET $url failed: " . $res->status_code); return; }
- config.yamlでマルチバイト設定を使う場合(検索時のキーワードとか)encodeしましょう
- 最低でもSYNOPSISに設定方法を書きましょう(ヘルプちゃんと書くのが望ましいけど人のこと言えないな:汗)
- module: CustomFeed::ChatBotUsi
config:
apikey: XXXXXXXXXXXXXXXXXX
name: your name
friend: your friend name
- 日時関連は、Plagger::Date を使いましょう。