paiza times

paizaがお届けする、テック・キャリア・マネジメント領域における「今必要な情報」を届けるWebメディア

logo

paizaがお届けする、テック・キャリア・マネジメント領域の「今必要な情報」を届けるWebメディア

マストドンとツイッターに同時投稿できるツールをPythonで作ってみた

f:id:paiza:20170501120821j:plain
Photo by Bryan Kemp
秋山です。

最近話題の「Mastodon」( マストドン )ですが、皆さん使っていますか?

私は、個人的にtootとtweetを同時にしたいと思うことが多いです。せっかくなので、それを叶えるツールを(ざっくりですが)Pythonで作ってみました。

便利なライブラリや認証機構を使ってサクッと作るレシピという感じで、基本的にはAPIを叩くだけなので技術的に難しいことはありません。とにかく素早くBotみたいなものを作りたい!という人の参考になればと思います。

(※ただしあまりインスタンスへ負荷がかからないようにしましょう、Botを作るのであれば自分でインスタンスを立てるのが望ましいかと思います)

■Mastodonの設定

まずは Mastodon.py と twython を pip でインストールします。

pip install Mastodon.py twython

次に、Mastodonにアプリの登録をしましょう。Twitterで言うところの、連携アプリの登録みたいな感じです。

from mastodon import Mastodon
Mastodon.create_app("toot & tweet",
    api_base_url = "https://mstdn.jp",
    to_file = "app_key.txt"
)

上記のコードを一度実行すると app_key.txt というアプリのキーが吐き出されますので、それを使ってログインします。


app_key.txt を指定して mstdn.jp にログインしましょう。

from mastodon import Mastodon

mastodon = Mastodon(
    client_id="app_key.txt",
    api_base_url = "https://mstdn.jp")

mastodon.log_in(
    "登録メールアドレス",
    "パスワード",
    to_file = "user_key.txt")

上記のコードを実行すると、 user_key.txt に指定したアカウントでAPIを使うキーが吐き出されます。


api_key.txt と user_key.txt を指定すると、こんな感じでAPIを叩くことができます。

from mastodon import Mastodon

def toot(s):
    mastodon = Mastodon(
        client_id="app_key.txt",
        access_token="user_key.txt",
        api_base_url = "https://mstdn.jp")
    mastodon.toot(s)

toot("TEST")

ここまでがMastodon用のコードになります。

■Twitterの設定

とりあえずTwitterにログインして、Twitter Appsのページを開き、Create New Appから必要事項を記入しましょう。
f:id:paiza:20170501115919p:plain

その後、作られたアプリケーションを開いて Keys and Access Token から Token Action で Create my access token を押してトークンを作ります。

Consumer Key (API Key)
Consumer Secret (API Secret)
Access Token
Access Token Secret

この4項目の右側のトークンを、下記のコードにコピペして使います。

import datetime, twython
c_key  = "Consumer Key (API Key)"
cs_key = "Consumer Secret (API Secret)"
a_key  = "Access Token"
as_key = "Access Token Secret"

def tweet(s):
    api = twython.Twython(c_key, cs_key, a_key, as_key)
    api.update_status(status=s)

tweet("TEST")

こんな感じでtweetが成功します。


ソースコードをいちいち書き換えたりするのは面倒なので、コマンドラインツール化をしましょう。以前このブログでも紹介した「Python Fire」を使ってコマンドラインツール化します。

Python Fireを使ってみた記事はこちら
paiza.hatenablog.com

import datetime, twython
c_key  = "Consumer Key (API Key)"
cs_key = "Consumer Secret (API Secret)"
a_key  = "Access Token"
as_key = "Access Token Secret"

def tweet(s):
    api = twython.Twython(c_key, cs_key, a_key, as_key)
    api.update_status(status=s)


from mastodon import Mastodon
def toot(s):
    mastodon = Mastodon(
                        client_id="app_key.txt",
                        access_token="user_key.txt",
                        api_base_url = "https://mstdn.jp")
    mastodon.toot(s)

def toot_and_tweet(s):
    tweet(s)
    toot(s)


if __name__ == '__main__':
    import fire
    fire.Fire(toot_and_tweet)

こんな感じで toot_and_tweet.py というファイルを作れば、コマンドライン上でこんなふうにコマンドを叩くだけで
f:id:paiza:20170501122750p:plain

tootとtweetが一度にできます。
f:id:paiza:20170501120356p:plain

■まとめ

便利なライブラリ群と簡単な認証機構のおかげで、簡単に自分の欲しいツールを作ることができました。

tootとtweetの連携に限らず、いろいろ応用できると思います。

■Pythonの講座も公開中!プログラミングが動画で学べるレッスン

paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。

自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。

paizaラーニング

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

paizaのスキルチェック

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

paizaのおすすめコンテンツ

PPG proken プログラミングゲーム「初恋 プログラミング研究会〜海に行こうよ〜」 PPG Bingo プログラミングゲーム「コードレビューBINGO!!」
paiza転職 paiza新卒 EN:TRY paizaラーニング 記事内に記載している情報は、記事公開時点でのものとなります。 Copyright Paiza, Inc, All rights reserved.