にわかオタクによるにわか忘備録

にわかなオタクの試行錯誤を忘備録的にまとめているブログです.にわかなのでやってる事が全体的にお遊び感ある&所々誤りがあるのは否めませんが,生暖かい目で見ていただければと思います.

MastodonのAPIを叩いてみる

最近流行のTwitterライクなサーバ分散型SNSMastodonPython用のAPIが存在しているので叩いてみる.

基本的な作りはTwitter APIと同様.

① クライアントコードとユーザコードを取得し, ② これらを元にトゥート(ツイートみたいなもん) するらしい.ここではmstdn.jpサーバでとりあえずトゥートしてみる.

①以下のコードを1回だけ実行.

# -*- coding: utf-8 -*-
from mastodon import Mastodon

url = "https://mstdn.jp"

print url

Mastodon.create_app(
    "PyTootApp",
    api_base_url = url,
    to_file = "cred.txt")

print '**********Appをレジストできました!**********'

mastodon = Mastodon(
    client_id = "cred.txt",
    api_base_url = url)

mastodon.log_in(
    "(your email address)",
    "(your password)",
    to_file = "usercred.txt")

print '**********ログイン出来ました!**********'

(your email address)と(your password)にはMastodonを登録するのに使ったアドレスとパスワードを書く.

②以下のコードを実行.ここではテキストファイル(toots_contents.txt)に書いたトゥート(半角スペース区切り)を読み込んで実行する仕様にした.

# -*- coding: utf-8 -*-
#
# mstdn.jpでトゥートするためのコード
#

from mastodon import Mastodon
import numpy as np

mstdn = Mastodon(
    client_id = 'cred.txt',
    access_token = 'usercred.txt',
    api_base_url = 'https://mstdn.jp')

toots = np.loadtxt('toots_contents.txt',dtype=np.string_)

print toots

for i in xrange(len(toots)):
    try:
        print toots[i]
        mstdn.toot(toots[i])
    except:
        print 'No.',(i+1),'toots failed'

なお,サーバの不調か何か分からないが(mstdn.jpに限らず.ioなど他サーバでも見られた現象だが,)APIによる接続は不安定で,①のプロセスで弾かれることも少なくない.その時は時間を置いて再度実行すると何とかなるので,(サーバに負荷をかけない程度に)何回も実行してみよう.