記事を投稿した事をマストドンにポスト
投稿:2024-02-08
投稿する度に手作業でマストドンにポストするのが面倒くさい。
何か新しい機能を入れたい時はとりあえずCPANを覗き込みます。
すると大抵の物は既にある。
とてもありがたい。
私のサイトはMojoliciousを使っているのでプラグインにして組み込みます。
記事の投稿を受け付ける処理(コードは内緒)の最後でMastodonTootを呼び出せばマストドンにポストする訳です。
Mastodon::Client - Talk to a Mastodon server - metacpan.org
package MastodonToot;
use Mojo::Base "Mojolicious::Plugin";
use Mastodon::Client;
sub register {
	my ($self, $app, $conf) = @_;
	$app->helper(MastodonToot => \&mastodontoot);
}
sub mastodontoot {
	my $self = shift;
	my ($text) = @_;
	my $config = $self->app->config;
	my $mastodon = $config->{mastodon};
	my $client = Mastodon::Client->new(
		instance => $mastodon->{instance},
		name => "homepage update announce",
		client_id => $mastodon->{client_id},
		client_secret => $mastodon->{client_secret},
		access_token => $mastodon->{access_token},
	);
	$client->post_status($text, {
		visibility => "public",
	});
}
1;
myapp.confにポストに必要な設定を入れてプラグインに取得させます(「?」は伏せ字)。
	# mastodon
	mastodon => {
		instance => "fedibird.com",
		client_id => "tHKcdk?????????????????????????????????????",
		client_secret => "4Gj5Ed?????????????????????????????????????",
		access_token => "zwCADo?????????????????????????????????????",
	},
instanceはマストドンのインスタンス、client_id/client_secret/access_tokenはインスタンスのホームページでアプリを登録した際にインスタンスが生成した物です。
