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は単純明快なのでよいですね。


いいなと思ったら応援しよう!