やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Mastodon.pyで画像をtootする

Mastodon APIPythonラッパ。

成果物

GitHubMastodon.py.201706090908

開発環境

参考

Mastodon.pyのコード改修

python3.6.1のvenvにてwebapi仮想環境を作った。そこにMastodon.pyをインストールした。

  1. /.../venv/webapi/lib/python3.6/site-packages/mastodon/Mastodon.pyを開く
  2. def media_post関数にある処理を以下のように修正する
#return self.__api_request('POST', '/api/v1/media', files = {'file': media_file_description})
return self.__api_request("POST", "/api/v1/media", files = {"file" : (file_name, open(media_file, "rb"))})

ソースコード抜粋

import mimetypes
from mastodon import Mastodon
media_files = [mastodon.media_post(media, mimetypes.guess_type(media)[0]) for media in media_file_paths]
ret = mastodon.status_post(status=message, media_ids=media_files)

media_post()で送信用データを生成したあと、status_post()に渡してtootするという流れ。

所感

MimeTypeを取得するバッケージがPython標準に存在した。いつぞやでGitHubアップローダを作った時に似たようなものを自作したような……。