自分の Twitter アカウントは、
はてなのアカウントと同じで theworld なのだけど、
この Twitterアカウント宛に外国のみなさんが
英文で「〜the world」という部分を (@theworld)にして
ガンガン Mention を送ってくる。例えばこういう感じ。
こういうのを送ってくる人は、こういう使い方なうえに
@theworld というアカウントを人が使っていると思っていないから
次もまた送ってくる可能性があるので
鬱陶しくらならないようにブロックしてきたのだけど、
手動でやるのがあまりにも面倒になったので Twitter API を叩いて自動化することにした。
Twitter で Block するスクリプト
自動ブロックする条件は以下。
- Tweet に日本語が含まれていない
- 自分が発言者をフォローしていない、発言者が自分をフォローしていない
つまり自分と関わりが無くて英語で Mention を送ってくるユーザー。
処理的には別に面白くも無いけどこんな感じ。
<?php require_once("twitteroauth.php"); // https://github.com/abraham/twitteroauth $consumer_key = "XXXXXXXXXXXXXXXX"; $consumer_secret = "XXXXXXXXXXXXXXXX"; $access_token = "XXXXXXXXXXXXXXXX"; $access_token_secret = "XXXXXXXXXXXXXXXX"; $twitter = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret); // Reply $mentions_xml = $twitter->OAuthRequest("http://api.twitter.com/1/statuses/mentions.xml","GET", array("page" => "1", "count" => 30)); $mentions = simplexml_load_string($mentions_xml); foreach($mentions->status as $mention) { // なんかこうしないといろいろアレだったので $user_id = $mention->user->id; $text = mb_convert_kana($mention->text, "a"); // 日本語が含まれていないか確認 if (strlen($mention->text) == mb_strlen($text, 'utf-8')) { $user_xml = $twitter->OAuthRequest("http://api.twitter.com/1/users/lookup.xml","GET", array("user_id" => "$user_id")); $user = simplexml_load_string($user_xml); // フォローしていない、されていないなら Block if(($mention->user->following != 'true') AND ($user->user->following != 'true')) { $twitter->OAuthRequest("http://api.twitter.com/1/blocks/create.xml","POST", array("user_id" => "$user_id")); } } } ?>
これを 1 時間に 1 回まわして自動で弾いている。
手動で 10 件ちかくチマチマ Block 作業をしていたのが
アホとしか思えないほど楽になった。
先週から回し初めて、1 日の終わりに Block の総数を
記録するようにしてみたのだけど、
現状は以下のようになっていた。
1570 超えていた。
こんなにユーザーをブロックしているのは他に池田信夫さんとか
東浩紀さんくらいしかいないのではないだろうか。
Block できる最大数っていくつなんだろう。