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