Blueskyでブロックしてきたユーザへのフォロー解除方法
・飛ばし読み用
以下のコードでタイトルの事ができます
from atproto import Client
client = Client()
client.login('example@example.com', 'your_password')
uri = client.follow('did:plc:**********************').uri
client.delete_follow(uri)
・本題
Blueskyにフィードバックを投げましたが、まだ現在(2024/10 時点で)機能実装されてなさそうなものがありまして、それをAPIを使って自己解決しようというものです
Twitter(X)とは違い、ブラウザ版のBlueskyではブロックしてきた相手に対してはフォローを解除できません
これでは相手がブロックしてきたのに、そんな相手をずっとフォローする事になって嫌ですよね?
ここでは公式(ブラウザ版)の機能では実装されていない強制的なフォロー解除の方法を記述しています。
(内容はPythonでHello Worldかける人ならできちゃうので、PC得意ニキならサクッといけるはずです!)
-実行条件
以下の条件が必要です
Pythonの開発及び実行環境(pipコマンドが使える状態であればよい)
-捕捉
こちらから先にブロックした場合、相手側からこちらをフォロー解除できない状態は変わりません
それではAPIを利用して強制的にフォローを解除していきましょう
[下準備]
① コードを動かすための情報を集める
必要なものは次のもの
・Blueskyのログインメールアドレスとパスワード
・相手のDID(②でとってくる)
②相手のDIDの取得
相手のDIDはDID取得URLより取得できます
参考までにBluesky公式アカウントと思われるDIDの取得をしてみます
https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle=bsky.app
すると以下のようなテキストが表示されると思います
-------
{"did":"did:plc:z72i7hdynmk6r22z27h6tvur"}
-------
これをブロックしてきた相手のDID取得URLに変更します、変更箇所はhandle=の後になります
https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle=相手のBlueskyID
この[相手のBlueskyID]というのはブラウザで表示したときのprofile/の後ろにある「ここの部分」にあたります
https://bsky.app/profile/ここがBlueSkyID
一般的なユーザーであればprofile/ユーザー名.bsky.socialとなっていますね
[プログラムの実装]
PythonのBlueskyライブラリをインストール
pip install atproto
example.pyをメモ帳でも何でもいいので作成して、以下をコピペします
from atproto import Client
client = Client()
client.login('example@example.com', 'your_password')
uri = client.follow('did:plc:**********************').uri
client.delete_follow(uri)
そしてclient.loginに渡す情報をあなたのBlueskyログイン情報に書き換えます
client.login('example@example.com', 'your_password') この部分
次にclient.followに渡すDIDを②で取得した相手の情報に書き換えます
uri = client.follow('did:plc:**********************').uri この部分
実行して強制フォロー解除!
py .\example.py
example.pyを実行すればフォローを強制的に解除できます。これですっきり!
コードレビュー的な
一度client.followで嫌な相手をフォローしている感じになって気持ち悪いところもありますが、これをしないとuriが取得できないため致し方なしといったところですね。
参考にしたのは公式のPythonドキュメントです。
あまりBlueskyの開発記事などがないので情報は少なめですが、PythonのBlueskyのAPIは単純明快なのでよいですね。