マストドンのユーザーを一括アンフォローするPythonスクリプト3本

この記事は約 4 分で読めます。

どうも、匠です。

マストドン(Mastodon)が流行り始めた当初にこんな遊びをしていました。ほんの軽い気持ちで。

試してみた!2万人フォローするとマストドン(Mastodon)はどう見えるのか?
どうも、匠です。どっぷりマストドン(Mastodon)に浸かりまくって仕事が手につかなくなっております。いやはや。。。5日前に下記のような実験をしました。そこからフォローを2万人まで増やしてみた結果、より面白くなったのでご紹...

しかし、マストドン会議2の中でPawooの中の人達、つまりは Pixiv のエンジニアの皆様がですね、リモートフォローが多いユーザーは困るというようなお話をされていました。

マストドン会議2 ― Mastodonにインスタンスを立てる理由~そして実装の課題 生中継
マストドン会議2―Mastodonにインスタンスを立てる理由~そして実装の課題登壇者株式会

軽い気持ちで迷惑をかけてしまったと思いつつも、「相互フォローだけ残すのは良いですよ!」という寛大な条件で一括アンフォローを Pawoo 管理者の皆様にやっていただきました。2万から4千強になったわけです。

もちろん、それで良いとは思っておらず、少し整理しないといけないなとは思っていたんです。ただ、その当時は Python も使えなかったので、シェルスクリプトだけで一括アンフォローするのはちょっと大変だなぁと後回しにしておりました。ほんとすいません>Pawooの皆様

しかし、Pythonの練習したかったMastodon 2 Advent Calendar 2017 での執筆に向けて、マナーの悪い行いを反省しておこうということでフォローを整理をしてみました。

本記事では、その時に使ったスクリプトを公開します。

皆様の年末の大掃除に少しでも役立てば幸いです。

スポンサーリンク

マストドンのバッチ処理スクリプト

マストドンで一括アンフォローするためのスクリプトたちをご紹介します。

ダウンロード

以下からダウンロードできるようにしました。

itsumonotakumi/mastodon_batch
Script for batch processing at Mastodon. Contribute to itsumonotakumi/mastodon_batch development by creating an account on GitHub.

必要条件

  • Python 3
  • requests モジュール
  • Mastodon.py モジュール

ちなみに、匠は CentOS7 の Python 3.6最新版の環境で実行しました。あまり標準以外のモジュールは使っていないので制約は厳しくないと思います。

事前準備

  1. まずは新しいOAuthアプリを作って、クライアントID と アクセストークンを取得します。※詳しい方法はググって下さい。もうたくさん出ますので割愛。
  2. クライアントID と アクセストークンの値をそれぞれファイルに保存します。
  3. 各スクリプト上部の変数の値を幾つか変更して下さい。
CLIENT_CRED = '{client id file path}'
ACCESS_TOKEN = '{access token file path}'
API_URL = 'https://{mastodon instance host}'
USER_LIST = 'following_accounts.csv'
LOG_FILE = '{log file path}'

注意

このスクリプトは、対象のマストドンインスタンスのAPIを頻繁に呼び出します。

TIMEWAIT変数の値は必ず5(秒)以上に設定して下さい。そうでなければ、大量のユーザーをアンフォローする場合には、お使いのインスタンスに高負荷を与えて迷惑をかけてしまうことになるかもしれません。

また、リストのユーザー数が多い場合には、比較的ユーザーが少ない時間帯(深夜や平日日中)に実行しましょう。

unfollow_list.py

リストファイルに含まれるユーザーを全てアンフォローするスクリプトです。

実行コマンド

$ python unfollow_list.py

unfollow_dead_user.py

下記に該当するユーザーは全てアンフォローします。
* 指定した日数以降にトゥートしていないユーザー全て
* 過去にトゥートをした形跡が全く無いユーザー全て

実行コマンド

$ python unfollow_list.py

unfollow_not_mutual.py

相互フォローになっていないユーザーを全てアンフォローします。

実行コマンド

$ python unfollow_list.py
スポンサーリンク

実行結果

これらのスクリプトを活用して以下の順に実行しました。

  1. unfollow_dead_user.pyで30日以前からトゥーとしていない死んでるユーザーをアンフォロー
  2. unfollow_not_mutual.pyで、相互フォローになっていないユーザーをアンフォロー(一部は再フォロー)
  3. unfollow_list.py で mstdn.jp と friends.nico のユーザーは全てアンフォローして、各インスタンス側のアカウントで再フォロー。
  4. ホームタイムラインで目に見えて18禁画像をアップしているユーザーさんは申し訳なさそうにアンフォロー

実行前はこちら。スクリーンショットを取り漏らしてしまったので、ユーザーローカルさんのランキングから拝借しました。

マストドン:スクリプト実行前のフォロー数

こちらのサイトの数字は最近更新されていないみたいで、若干違和感があるかもしれませんが、誤差ということでご容赦を。。。

そして、実行後のフォロー数はこちらです。

マストドン:スクリプト実行後のフォロー数

なんと、10分の1以下の削減に成功!なんてことでしょう!?

ただ、ホームのタイムラインがゆっくり過ぎて、若干さみしいくらいです。。

スポンサーリンク

おわりに

なお、初級レベルとはいえ、Python習得して、本当に良かったと感じます。マストドンはTwitterのように開発者へ厳しくないので、勉強のために色々やってみるのは向いているかなと思います。

なお、スクリプトに対する不具合や助言などがありましたら、遠慮までこちらまでお問い合わせくださいませ。

☘️いつもの匠🌸 - [email protected]
共有欲を発散する人。

余談ですが、マストドンを使う上では、フォロー数を増やした方が楽しい反面、増やしすぎるとホームタイムラインが役に立たなくなります(汗

程よい人数のフォローで楽しいマストドンライフをお送りください。

ITセキュリティを生業とするエンジニアという名の社畜です。妻と子供一人と共に、毎日を楽しく生きてます。このブログを通じて、ただひたすらに共有欲を発散しています。詳しいプロフィールはこちら