Bblueskyが招待なしで使えるようになったとのことでドキュメント読み始めてみました。
まずはAPIを使ってPythonから投稿してみます。
環境
OS macOS 14.2.1
Python 3.12.1
pip 24.0
Pythonで開発する環境は整い済み、Blueskyもアカウント作成済みとして始めます。
atprotoのインストール
まずはBlueskyが使っているAT Protoclを扱うためのライブラリをインストールします。
% pip install atproto
Collecting atproto
Downloading atproto-0.0.40-py3-none-any.whl.metadata (14 kB)
Collecting click<9,>=8.1.3 (from atproto)
Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting cryptography<42,>=41.0.7 (from atproto)
Downloading cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl.metadata (5.2 kB)
Collecting dnspython<3,>=2.3.0 (from atproto)
Downloading dnspython-2.5.0-py3-none-any.whl.metadata (5.8 kB)
~~~(省略)~~~
Installing collected packages: websockets, typing-extensions, sniffio, pycparser, libipld, idna, h11, dnspython, click, certifi, annotated-types, pydantic-core, httpcore, cffi, anyio, pydantic, httpx, cryptography, atproto
Successfully installed annotated-types-0.6.0 anyio-4.2.0 atproto-0.0.40 certifi-2024.2.2 cffi-1.16.0 click-8.1.7 cryptography-41.0.7 dnspython-2.5.0 h11-0.14.0 httpcore-1.0.2 httpx-0.25.2 idna-3.6 libipld-1.1.0 pycparser-2.21 pydantic-2.6.1 pydantic-core-2.16.2 sniffio-1.3.0 typing-extensions-4.9.0 websockets-12.0
以上でインストール完了です。
エラーが出たらPythonだったりpipのバージョンが古いかもしれません。
Pythonは3.7.1以上が必要なので、そのあたりを確認してみてください。
ソースコード
早速ソースコードを書いてみます。
今回はbskyPost.pyという名前でファイルを作成します。
from atproto import Client
client = Client()
client.login('ユーザ名orメールアドレス', 'パスワード')
client.send_post(text='APIからポストしてみた')
これだけです。
各行を見ていきます
from atproto import Client
インストールしたatprotoライブラリからClientクラスを使用するためにインポートしています。
Clientクラスについて詳しくはこちら
atproto_client.Clientクラス
client = Client()
Clientクラスを初期化して変数に代入しています。
この初期化で使用するサーバを指定します。
デフォルトではbsky.appを使用するので、
client = Client()とclient = Client('https://bsky.app ')
と同義になります
client.login('ユーザ名orメールアドレス', 'パスワード')
Blueskyに登録しているアカウントとパスワードです。
アカウントはユーザ名、メールアドレスどちらでも可
client.send_post(text='APIからポストしてみた')
text=''の箇所に投稿したい文章を入力します。
実行
最後にbskyPost.pyを実行します。
% python3 bslyPost.py
参考
・The AT Protocol SDK ( Getting Start | Introduction)
・Bluesky Documentation
X(旧teitter)が色々と残念な状況になっているので、今回のBluesky招待制終了により、一般ユーザの開発が進んで利便性が増していけばXからの大移動もあるのかもしれないですね。