現役エンジニアがオススメするデスク周りの商品紹介

【Twitter API】特定ユーザのフォロワー一覧を取得する方法【PHP】

本サイトのコンテンツには、プロモーションが含まれている場合があります。

PHPで特定ユーザのフォロワーリストを取得する

読者の悩み

  • Twitter APIを使用して、フォロワーのリストを取得したい
  • PHPでどうやって書くべきか教えて欲しい

こんな悩みに答える記事になっています。

先日投稿した記事にて、TwitterAPIを使用できるようになりました。

【TwitterAPI】developersアカウントへの登録手順まとめ【審査のやり取りあり】 【TwitterAPI】developersアカウントへの登録手順まとめ【審査のやり取りあり】 Twitter Developerへの登録方法を、審査のやり取り付きで紹介します。Twitter APIを使うための審査ですが、これがなかなか通らない。私の審査のやりとりを参考にして、頑張って通りましょう。

・・・で、それから何ができるの?という話をしていきます。

ここで紹介するのは、ある特定のフォロワーを@~~の形で全件出すためのphpです。

フォロワーのid一覧を取得するソースコードは落ちていたのですが、そこからの@~~への変換に困ったので書いていきます。

なにに使えるかというのは個人での創意工夫にお任せします(笑)

1.PHPでTwitterのフォロワーリストを取得する

フォロワーリストを取得するためのPHPソースコードを一気に貼り付けます。

<?php
$user = 'xxxxxxxx'; //@~~の「~~」の部分をのせる

require_once("./tmhOAuth.php");
 
//Access Tokenの設定 apps.twitter.com でご確認下さい。
//API keyの値を格納
$sConsumerKey = "xxxxxxxxxxxxxxxxxxxxxxxxx";
//API secretの値を格納
$sConsumerSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
//Access Tokenの値を格納
$sAccessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
//Access Token Secretの値を格納
$sAccessTokenSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
//OAuthオブジェクトを生成する
$toa = new tmhOauth(
	array(
		"consumer_key" => 		$sConsumerKey,
		"consumer_secret" => 	$sConsumerSecret,
		"token" => 				$sAccessToken,
		"secret" => 			$sAccessTokenSecret,
		"curl_ssl_verifypeer" => false,
	)
);


$cursor = -1; //Initialize
$sleep_counter = 1; //skip one to be used to get no of user's followers
$loop_counter = 0; //Total loops in the while block
//get the number of a users followers
$user_details = $toa->request( 'GET', "https://api.twitter.com/1.1/users/show.json",array('screen_name'=>$user));
$user_data = json_decode($toa->response["response"]);



//$user_data = json_decode($user_details);
while($cursor != 0){	
	//Get followers
	$followers = $toa->request( 'GET', "https://api.twitter.com/1.1/followers/ids.json",array("cursor" => $cursor, "screen_name"=>$user));
	//$friends = $toa->get('friends/ids', array('cursor' => -1));
	//Convert JSON returned to array

	$data = json_decode($toa->response["response"], false, 512, JSON_BIGINT_AS_STRING);
	$i=0;
	foreach($data->ids as $id){
		$followers_id[$i] = $id;
		$i++;
	}
	
	$roop_count = floor((count($followers_id)-1)/100);//100の位の数字

	$followers_id = array_chunk($followers_id,100);

	for($k=0; $k<=$roop_count; $k++){
		$followers_id_sep[$k] = implode(",",$followers_id[$k]);
		$followers_details[$k] = $toa->request('GET',"https://api.twitter.com/1.1/users/lookup.json",array('user_id'=>$followers_id_sep[$k]));
		$followers_details[$k] = json_decode($toa->response["response"]);
	}

	if($roop_count == 0){
		$all_followers_details = $followers_details[0];
	}

	for($i=1; $i<=$roop_count; $i++){
		if($roop_count>=1){
		$followers_details[0] = array_merge($followers_details[0],$followers_details[$i]);
		}
	$all_followers_details = $followers_details[0];
	}

	$display=0;//表示人数
	for($i=0; $i<count($all_followers_details); $i++){
		echo "@".$all_followers_details[$i]->screen_name."<br>"; 
		$display++;
	}

	echo "<br>";
	//echo "<br>".$display."<br>";//表示回数

	
	//Get next cursor pointer
	$cursor = $data->next_cursor_str;
	
	//Sleep counter
	if($sleep_counter >= 14){
		sleep(16*60); //Pause execution for 16mins
		$sleep_counter = 0; //Reset counter
	}else{
		$sleep_counter++;
	}
	
	//loop counter
	$loop_counter++;
}
//echo output
$followers = $user_data->followers_count;
$loop_multiplier = $loop_counter * 5000;
//How many were really stored
if($loop_multiplier > $followers){
	$dumped = $followers;
}else{
	$dumped = $loop_multiplier;
}
echo '<br><strong>' . $dumped 
	. '</strong> of <strong>' . $followers 
	. '</strong> followers of <strong>' . $user . '</strong> (' 
	. $user_data->name.')';
?>

2.Twitterフォロワーリスト取得の実行結果

実行するだけで、以下のような結果が得られるかと思います。

隠すところしかないのですが・・・
@~~のリストが出て、最後に
特定のフォロワーのフォロワー数、
情報取得できたフォロワー数、(凍結されてたら取得できない)
自分で設定した特定の人のアカウント名と名前が出てきます。

3.Twitterフォロワーリスト取得のPHPプログラムの設定方法

2行目で、誰のフォロワーリストを取得したいか?を記入します。

例えば、[@aaiiuueeoo12345]さんのフォロワーリストを取得したければ[aaiiuueeoo12345]と書き込めばOKです。(アカウント名が適当すぎる)

ちなみに、この人が鍵垢ですと不可能です。鍵垢だったら普通にTwitterで見ようとしても見えないから、見えちゃダメなことになっています。

8~14行目に、TwitterAPIのアクセスキーを各自コピペで張り付けると完成です。

で、このプログラムを動かすのにtmhOAuth.phpというものが必要です。

それについて説明された文章を抜粋(https://marunouchi-tech.i-studio.co.jp/2117/

tmhOAuthとは?

Twitter APIを扱うオープンソースライブラリです。
tmhOAuth.phpのみで機能が使えるので導入が簡単です!
Apache v2.0ライセンスです!
なので、使用する場合は、下記のような文言を記す必要があります。
例「このサイトでは、Apache 2.0ライセンスで配布されている製作物が含まれています。」

ダウンロードはこちらから:themattharris/tmhOAuth · GitHub

これをダウンロードして、同じファイルの中に入れ込んであげるとうまく動作すると思います。

書き方次第で別のファイルに入れても動かせるようにはできますので、個人個人で頑張ってください。

4.フォロワーリスト取得でこんな応用例も

@~~の部分だけをとるのではなく、その他の部分も取得できます。

74行目の->screen_nameという部分が、@以下の文章を表していますので、ここを変えることによって例えばユーザのいいね数だったりとか、最新のツイートだったりとか(これは鍵がついていなければですが)を取得可能です。

うまく使えばTwitter解析ができそうですね。

上手く書き換えて使ってみてください。

全然別のプログラムになりますが、自動ツイートや自動フォローなどを実装したプログラムも作れるので、思うものを実装できるように頑張ってみてください。