29
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BlueskyにAPIを使ってPythonから投稿してみる

Last updated at Posted at 2024-02-08

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という名前でファイルを作成します。

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

以下のようにポストされると思います
スクリーンショット 2024-02-08 15.58.57.jpg

参考

The AT Protocol SDK ( Getting Start | Introduction)
Bluesky Documentation

X(旧teitter)が色々と残念な状況になっているので、今回のBluesky招待制終了により、一般ユーザの開発が進んで利便性が増していけばXからの大移動もあるのかもしれないですね。

29
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?