ルモーリン

記事を投稿した事をマストドンにポスト

投稿: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はインスタンスのホームページでアプリを登録した際にインスタンスが生成した物です。