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 を使いましょう。
  • SNSなどのログインが必要なサイトならば Plagger::Mechamize を使いましょう。