酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Misskey .py を使って画像を添付したステータスを misskey.io へ投稿する

Python を使って、画像を添付したステータス「Hello, Misskey!」を misskey.io へ投稿する方法を紹介する。

Mastodon.py のインストール

Python で Misskey にメッセージを投稿するには Misskey.py というパッケージを使用する。Python から Misskey API に簡単にアクセスするためのツールである。

github.com

このパッケージは pip を使ってインストールできる。

pip install Misskey.py

Misskey.py を使ってステータスを misskey.io へ投稿する

この例では api_base_urlmisskey.io を指定しているが、皆さんが利用しているサーバーのAPIベースURLに変更して欲しい。

import os
import sys
import time
from misskey import Misskey

misskey_access_token = 'アクセストークン'
misskey_api_base_url = 'misskey.io'

misskey = Misskey(
    misskey_api_base_url,
    i = misskey_access_token
)

# 引数から画像を含むディレクトリのパスを取得する
image_dir_path = sys.argv[1]

# 画像をアップロードする
misskey_media_ids = []
for filename in sorted(os.listdir(image_dir_path)):
    if filename.endswith('.png') or filename.endswith('.jpg'):
        file_path = os.path.join(image_dir_path, filename)
        with open(file_path, "rb") as f:
            media = misskey.drive_files_create(f)
            media_id = media['id']
            print(f"アップロードされたファイル: {file_path}, メディアID: {media_id}")
            misskey_media_ids.append(media_id)

#print(f"{misskey_media_ids}")

# 画像のアップロード後、すぐにステータスを投稿しようとするとステータスコード 422 が返ってくるので10秒待機
time.sleep(10)

# 投稿を作成する
status = 'Hello, Misskey!'
misskey.notes_create(status, file_ids=misskey_media_ids, visibility='public')

ターミナルで、アップロードしたい画像ファイルが入っているディレクトリパスを指定して実行しよう。

python post_media_misskey.py /Users/ch3cooh/Desktop/images/20230412

上記のスクリプトを実行した。成功すると下図のようにノートを投稿できているはずだ。

関連記事