Twitterで自分をミュートしているフォロワーを調べたくないかい?

  • 25
    Like
  • 0
    Comment
More than 1 year has passed since last update.

※2016年2月4日追記
TweetDeckの他人のTL見るやつが使えなくなったので、使えなくなりました

君は自分がTwitterでミュートされているかどうか気になったことはあるかい?もしそれを調べる方法があったとしたらどうだい?いや、今は君がそれを望むかどうかはあまり関係がない。なぜならもうそれはできてしまっているからだ。

これは2015年12月15日のOUCCアドベントカレンダーの記事として書かれたものだ。前日はwena氏のリフレクツール進捗報告だった。

ちなみに僕は今日村上春樹の先日文庫化された小説を読んだ。それがこの記事に影響しているかどうかを完璧に客観的に判断する事は僕にはできない。しかしまぁ、少なからず影響を受けているし、僕も意図して、努力してそれをしている。少しだけお付き合い願いたい。

Twitterのミュート機能

Twitter社がなぜこの機能を実装したのか、その真意を僕に推し測る事は僕にはできない。ただ、この機能が既に少し前からTwitterの公式クライアントで実装されている事は事実だ。ミュート機能は実に便利な機能だ。フォローを外したくはないけどTLで見たく無い人のツイートをTLで見かけなくて良い。あるいは、自分がTwitterでフォロワーから疎まれ、目を背けたくなるようなツイートをしていてもフォロワーはミュートという選択肢を選択するだけで、フォローを解除しなくても自分のツイートを見なくて済む。この機能が実装されてから僕はフォローを解除されること、所謂「リムられる」ことが減ったように思う。ちなみに、僕は以前リムられた時にそれをDMで通知するサービスを作って、今も動かし続けている。詳しくはへったーを参照願いたい。Twitterでの人間関係は現実世界よりも複雑だ。現実世界の友達関係の延長から、名前も性別も知らないTwitterだけの友人関係もある。Twitterでフォローを外すことで壊れる人間関係が存在しても不思議じゃないし、だからこそミュートという機能は便利だ。僕はそれを理解した上でこれを作ったし、使うのは自己責任で使って頂きたい。僕は君達の人間関係が壊れても感知しないし、そんなもので壊れる人間関係はさっさと壊してしまえと思ってる。

リポジトリ

今回はこのリポジトリで開発を行った。自由に弄ってくれて構わない。
GitHub: Twitte Mute Checker

使い方

前置きが長くなったが、詳しい使い方を説明していこう。今回、僕が作ったものを簡単の為に「TMC」と呼ぶようにしよう。"Twitter Mute Checker"などという冴えないリポジトリ名の略称だ。
使い方は簡単だ。順を追って説明していこう。

  1. TweetDeckをWebブラウザで開いて欲しい。開いたらログインしておいてくれ。動作確認しているのはGoogle Chromeだけなのでできればこれで開いて欲しい。以下はChromeを想定して説明する。
  2. ブックマークバーのところで左クリックをして、「ページを追加」を選んで欲しい。
  3. 名前はなんでもいい。仮にTMCとしておこう。ここはさほど重要ではない。
  4. URLのところに、ここの中身をコピー&ペーストしてくれ。 スクリーンショット 2015-12-15 00.48.59.png
  5. TweetDeckを開いた状態でブックマークバーに追加した「TMC」をクリックする。
  6. チェックしたいアカウントをクリックする。
  7. チェックしたいユーザーが入ったリストをクリックする。
  8. 祈りながら待つ。

名称未設定.png

注意点

このTMCは実行時にツイートして、それを基点にミュートされているかをチェックする。なので自動でツイートがされるが許して欲しい。ツイート内容が気に入らなければ先のリポジトリから変更してくれ。
TMCはTweetDeckのJSを無理矢理弄ってAPIを叩いている。これを基幹になるAPIは制限が厳しく15分で15回しか叩くことができない。なので、ミュートをチェックしたいユーザーを15だけ選んで、それをリストに入れて実行して欲しい。また、実行間隔は15分以上開けないとErrorが出るので頭に留めておいて欲しい。
先のURLに書いてある文字列はjavascript: + script.jsの中身なので、改変して使ってもらって構わない

技術的な点

今回使用しているAPIはTweetDeckなどの一部の公式から出ているクライアントからしか実行できない特殊なAPIを使っている。なので、単独アプリケーションではなくこのようにJSを無理矢理実行させるしかなかった。
また、Chrome拡張を用いるという方法を最初は検討したが、Chrome拡張はJSのグローバルオブジェクトにはアクセスできないという問題点からブックマークバーにこれを載せるという方法になった。
このブックマークに載せる方法は例えばGitHubのPRを送るページとか、TwitterのWebページで押せば自動でテンプレートが挿入されるようにとかも応用できるのでおすすめだ。

スクリーンショット 2015-12-15 02.11.26.png
PRはプロジェクトで統一したほうが個人的には良いと思っている。だからこの方法は個人的には気に入っている。

JSの解析

今回一番苦労したのはTweetDeckで動いているJSの解析だ
関数の引数は意味を持たないものになっているし、formattingをすると2万行にもなる。
なので解析には苦労したが、これらの方法を使ってなんとか行った。
1. ChormeのDeveloper ToolのNetworkで叩いているAPIのURIを調べる。
2. APIのURIでソースを検索する
3. 該当のjsの関数を調べる

jsの関数さえわかればもう後は簡単だ
例えば、Twitterでツイートをするときを見てみよう
1. ツイート時のURIを調べる
Twitterでツイートするときのendpointはstatuses/updateだというのは常識だ。これで検索をかけると、

TD.services.TwitterClient.prototype.update = function (e, t, i, n, s, r, a) {
    var o = {status: e};
    o.in_reply_to_status_id = t, o.lat = i, o.long = n, o.place_id = s, this.makeTwitterCall(this.API_BASE_URL + "statuses/update.json", o, "POST", this.processTweet, r, a)
}

というのがヒットする。これはだいたい関数の中身で引数の意味がわかるが、よくわからなければChromeのconsoleで以下の様に入力すると良い。

TD.services.TwitterClient.prototype.update = function (e, t, i, n, s, r, a) {
    console.log(e);
    console.log(t);
    console.log(i);
    console.log(n);
    console.log(s);
    console.log(r);
    console.log(a);
}

これでツイートすれば、consoleにいろいろ出てくるはずだ。
かなり無理矢理だが、こうすればある程度引数が何かがわかるようになる。

また、Chormeのconsoleは関数などをsuggestしてくれるので、かなり便利だ。

その他は面倒になったので、質問があればTwitterでもなんでも自由に質問してくれ。

あとがき

Twitterに怒られないか怖いし、あとから見直したらめちゃくちゃキモいな文章(真顔)

今日もまた誰も幸せにならない事をした。こんなんだから彼女できないのかな…