🈳

AtProtocolを使ってBlueskyにPythonからPostする

2023/06/18に公開

AT Protocol SDKのPythonラッパーであるThe At Protocol SDK for Pythonを使って、BlueskyへのPythonによるPost投稿を試してみました。
https://github.com/MarshalX/atproto

過去に公開した、分散型SNSへの投稿を試す記事は以下
Mastodon.pyを使ってPythonからトゥートする
Misskey.pyを使ってPythonからノートする

注意点

At Protocolとは、Blueskyによって現在開発中の、大規模分散型ソーシャルアプリケーションのためのプロトコルです。
まだ既存の分散型SNSと比較して実装されている機能が少ないため、今後破壊的な仕様変更が起こる可能性があります。
また、本記事で使用しているThe At Protocol SDK for Pythonも、v1.0.0までは過去のバージョンとの互換性を考慮せずに開発を進めると記載されています。
本記事ではv0.0.14時点の情報を元に記載していますので、最新のドキュメントと照らし合わせながらお読みください。

環境構築

Python環境の構築

Pythonの開発環境が構築できていない場合、以下の記事を参考に環境構築を行なって下さい。
https://zenn.dev/sion_pn/articles/4418eeda7c62d0
https://zenn.dev/sion_pn/articles/d0f9e45716cabb

The At Protocol SDK for Pythonのインストール

pipからThe At Protocol SDK for Pythonをインストールします。

zsh
pip install atproto

実装

それでは、実装を進めていきます。The At Protocol SDK for Pythonの公式ドキュメントはこちら。
https://atproto.blue/en/latest/
公式ドキュメントに記載のIntroductionの項目に従って実装していきます。

初期化からPostまで

それでは、初期化からPostまでのコードを書いてみます。

Clientコンストラクタの引数へBlueskyインスタンスのURLを指定します。
この引数は省略可能で、省略した場合は接続先がbsky.appになります。
本記事執筆時点では、アクセストークンなどを用いた認証方法は提供されていませんので、loginメソッドではユーザーネームとパスワードを直接使用して認証を行います。
あとは、send_postメソッドを呼べば、任意のテキストをPostすることができます。

main.py
from atproto import Client

# 初期化

# Clientのコンストラクタで引数を省略すると、bsky.appへ接続します
api = Client()
# 任意の接続先を指定したい場合は、以下のように記述します
# api = Client('BlueskyインスタンスXRPCのURL(例:https://bsky.social/xrpc)')

# ログイン
api.login('ユーザーネーム or メールアドレス', 'パスワード')

# Post
api.send_post('Hello World')

以上です。
https://atproto.blue/en/latest/readme.content.html#quick-start
現時点ではThe At Protocol SDK for Python以前に、At Protocol SDK自体の機能もStableではありませんが、気軽に試せるような環境は用意されていますので、リファレンスを当たりながら色々と試してみると面白いです。

Discussion