Twitterのbotを作る #6「unfollower(片思いユーザ)の取得」

2015年5月17日

サービス プログラミング 特集

Twitterは信頼関係のツールという事で、相互フォロー通して繋がっていくツールなのですね。 心理的にフォローを返してくれない人は、一方通行の片思いで、繋がっていないとかんがえる人の方が多いようです。 面白いツイートをしている人が、何万人もフォロワーがいるけど、その人がフォローしているのは数人というように、片思いでもアイドルのような存在の人は問題ないですが、アフェリエイトなどをしている人は、twitterを広告媒体として考えているとすると、両思いにならないと何の意味もありません。

フォロワーの獲得方法

実は、フォローをするのはtwitterの制約を超えなければ何人でもできるのですが、 フォロワーを獲得するのは、どんなシステムを使ってもほったらかしで自動では、獲得できません。 何故ならフォロワーはフォローしてくれた人のツイートを見たり、紹介文を見たりして、その人をフォローするかどうかを判断して、フォローしてくれるという事なので、全くツイートをしていない知らない人はフォローされないでしょう。 有名人なら話は別ですが、面白いツイート、RSSのように自分のタイムラインで情報提供や、ネタや、その人の日々のツイートを見たいと思った時にフォローしてくれるという事なんですね。 なので、魅力的なブログを書いたり、人が喜んでくれるECのサイトや、おもしろいネタなどをツイートして、フォローされる体制を作りましょう。 そして、フォローをしてフォローが返されない人は、フォローを外して次のフォローをしてくれる人を探していくことが、フォロワー人数を増やす王道なのでしょう。

片思いアカウントを探せ

考え方

基本的には、自分のフォローしている一覧の中でフォロワーリストでいない人(ID)を探せばいいだけなので、PHPの配列で判定していくことにしましょう。

ソースコード

twitter_unfollow.php

<?php date_default_timezone_set('Asia/Tokyo'); //ライブラリ処理 require 'twitteroauth/autoload.php'; use Abraham\TwitterOAuth\TwitterOAuth; //CLIの場合argvをREQUESTに変換する。 if(!isset($_SERVER['SCRIPT_URI']) && isset($argv)){ for($i=0,$c=count($argv);$i<$c;$i++){ if(!$argv[$i]){continue;} //各クエリの分解 $q = explode("=",$argv[$i]); if(count($q)<2){continue;} if($q[0]!=''){ //requestに格納 $key = $q[0]; $val = join("=",array_slice($q,1)); $_REQUEST[$key]=$val; } } } $key = array( "consumer_key"=>"aLrTI6JhcLKob0YbqCJHiFeDr", "consumer_secret"=>"j1gyzD56c4Vbd0NZTdZeEe8oB2TIwjPbdv63Vn28hoyWaII2eD", "access_token"=>"11363242-R3KcruUmQI9CMNYsj1VaLHw1wAmytm24pNHMCkAPP", "access_token_secret"=>"ENSQ2oFfzPWfQ19VA5zSWbKOJardmZytctmCb11Xf1Uxl" ); $connection = new TwitterOAuth($key['consumer_key'],$key['consumer_secret'],$key['access_token'],$key['access_token_secret']); // フォロワー一覧取得 $res = $connection->get('followers/ids', array('cursor' => -1)); //$followers = $res->ids; for($i=0;$i<count($res->ids);$i++){ $followers[$res->ids[$i]] = true; } while($res->next_cursor){ $res = $connection->get('followers/ids', array('cursor'=>$res->next_cursor)); for($i=0;$i<count($res->ids);$i++){ $followers[$res->ids[$i]] = true; } } // フレンド一覧取得 $friends = array(); $unfollows = array(); $res = $connection->get('friends/ids', array('cursor' => -1)); for($i=0;$i<count($res->ids);$i++){ $friends[] = $res->ids[$i]; if($followers[$res->ids[$i]]==true){continue;} $unfollows[] = $res->ids[$i]; } while($res->next_cursor){ $res = $connection->get('followers/ids', array('cursor'=>$res->next_cursor)); for($i=0;$i<count($res->ids);$i++){ $friends[] = $res->ids[$i]; if($followers[$res->ids[$i]]==true){continue;} $unfollows[] = $res->ids[$i]; } } //unfollow検索 echo "followers:".count($followers)."アカウント\n"; echo "friends:".count($friends)."アカウント\n"; echo "unfollows:".count($unfollows)."アカウント\n";

確認と結果

$ php twitter_unfollow.php followers:5807アカウント friends:6967アカウント unfollows:1041アカウント ブラウザでtwitterにログインしてみたところ、数字に若干のズレがあるようです。 もしかしたら、ブロックしているユーザーなども含まれている可能性がありますね。 今後の児童フォローなどは、そういったユーザー判定も行なっていくことにしましょう。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。