端くれプログラマの備忘録 PHP [PHP] 相互リンクされていないフォロワーをアンフォローするTwitter bot

[PHP] 相互リンクされていないフォロワーをアンフォローするTwitter bot

今回もTwitter botネタ。今回は相互リンクしていないフォロワーを自動アンフォローする機能。

相互フォローとは

自分が相手をフォローしていて、相手も自分をフォローしてくれている状態。

自動アンフォローの原理

  1. 自分をフォローしている人(フォロワー)のリストを取得 (Twitter API: followers/ids)
  2. 自分がフォローしている人(フォロー)のリストを取得 (Twitter API: friends/ids)
  3. 2つのリストをぶつけて、自分はフォローしているけど自分をフォローしてくれていない人を特定。
  4. 特定した人をアンフォローする (Twitter API: friendships/destroy)

サンプルコード

require_once('twitteroauth/twitteroauth.php');
 
$consumer_key = "xxxx";
$consumer_secret = "xxxxxxxx";
$access_token = "xxxxxxxx";
$access_token_secret = "xxxxxxxx";
 
$conn = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
if ($conn) {
    $followers = $conn->get('followers/ids', array('cursor' => -1));
    $friends = $conn->get('friends/ids', array('cursor' => -1));
 
    $count = 0;
    foreach ($friends->ids as $i => $id) {
        if (!in_array($id, $followers->ids)) {
            $conn->post('friendships/destroy', array('user_id' => $id));
            $count++;
        }
        if ($count >= 50) { // API呼び出し回数制限(200回/時)があるので注意
            break; // 適当なところでやめておく
        }
    }
}