マストドン(Mastodon)が流行り始めた当初にこんな遊びをしていました。ほんの軽い気持ちで。
しかし、マストドン会議2の中でPawooの中の人達、つまりは Pixiv のエンジニアの皆様がですね、リモートフォローが多いユーザーは困るというようなお話をされていました。
http://live.nicovideo.jp/watch/lv297159246軽い気持ちで迷惑をかけてしまったと思いつつも、「相互フォローだけ残すのは良いですよ!」という寛大な条件で一括アンフォローを Pawoo 管理者の皆様にやっていただきました。2万から4千強になったわけです。
もちろん、それで良いとは思っておらず、少し整理しないといけないなとは思っていたんです。ただ、その当時は Python も使えなかったので、シェルスクリプトだけで一括アンフォローするのはちょっと大変だなぁと後回しにしておりました。ほんとすいません>Pawooの皆様
しかし、Pythonの練習したかったMastodon 2 Advent Calendar 2017 での執筆に向けて、マナーの悪い行いを反省しておこうということでフォローを整理をしてみました。
本記事では、その時に使ったスクリプトを公開します。
皆様の年末の大掃除に少しでも役立てば幸いです。
マストドンのバッチ処理スクリプト
マストドンで一括アンフォローするためのスクリプトたちをご紹介します。
ダウンロード
以下からダウンロードできるようにしました。
必要条件
- Python 3
- requests モジュール
- Mastodon.py モジュール
ちなみに、匠は CentOS7 の Python 3.6最新版の環境で実行しました。あまり標準以外のモジュールは使っていないので制約は厳しくないと思います。
事前準備
- まずは新しいOAuthアプリを作って、クライアントID と アクセストークンを取得します。※詳しい方法はググって下さい。もうたくさん出ますので割愛。
- クライアントID と アクセストークンの値をそれぞれファイルに保存します。
- 各スクリプト上部の変数の値を幾つか変更して下さい。
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
実行結果
これらのスクリプトを活用して以下の順に実行しました。
- unfollow_dead_user.pyで30日以前からトゥーとしていない死んでるユーザーをアンフォロー
- unfollow_not_mutual.pyで、相互フォローになっていないユーザーをアンフォロー(一部は再フォロー)
- unfollow_list.py で mstdn.jp と friends.nico のユーザーは全てアンフォローして、各インスタンス側のアカウントで再フォロー。
- ホームタイムラインで目に見えて18禁画像をアップしているユーザーさんは申し訳なさそうにアンフォロー
実行前はこちら。スクリーンショットを取り漏らしてしまったので、ユーザーローカルさんのランキングから拝借しました。
こちらのサイトの数字は最近更新されていないみたいで、若干違和感があるかもしれませんが、誤差ということでご容赦を。。。
そして、実行後のフォロー数はこちらです。
なんと、10分の1以下の削減に成功!なんてことでしょう!?
ただ、ホームのタイムラインがゆっくり過ぎて、若干さみしいくらいです。。
おわりに
なお、初級レベルとはいえ、Python習得して、本当に良かったと感じます。マストドンはTwitterのように開発者へ厳しくないので、勉強のために色々やってみるのは向いているかなと思います。
なお、スクリプトに対する不具合や助言などがありましたら、遠慮までこちらまでお問い合わせくださいませ。

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