<目次>
(1) TwitterAPIを使ってフォロワーの一覧を取得する方法(Twitter4jライブラリ)
(1-1) 構文
(1-2) サンプルプログラム
(1) TwitterAPIを使ってフォロワーの一覧を取得する方法(Twitter4jライブラリ)
TwitterAPIのライブラリ(Twitter4j)を用いて、指定したユーザのフォロワーの一覧を取得する方法と、そのサンプルプログラムをご紹介します。
(1-1) 構文
①フォロワー一覧の取得
指定したユーザID(@XXXの@以降の部分)のフォロワー一覧を取得するには、Twitterクラスの「getFollowerIDs」メソッドを使います。このメソッドの戻り値の型は「IDs」ですが、更にこのIDsクラスの「getIDs」メソッドを使う事で、フォロワーのID一覧を保持した配列(long[]型)を取得できます。
(構文)
IDs followerIDs = [Twitterクラスのインスタンス].getFollowersIDs([フォロワーを出したい対象ユーザID], -1); long[] ids = followerIDs.getIDs();
②各フォロワーの基本データ取得
for(long id : ids) { //# フォロワーの情報を取得 User follower = twitter.showUser(id); //# [何かの処理(各フォロワーの名前を出力するなど)] }
(表)
クラス名 | メソッド名 | 戻り値の型 | 概要 |
getFollowersIDs | IDs | 指定のユーザの全フォロワーIDを含む「IDs」オブジェクトを返却します。内部的には以下のAPIコールしており、以下のリソースURLを呼んでいます。 https://api.twitter.com/1.1/followers/ids.json メソッドも異なる引数のものが複数用意されていますが、今回使用したメソッドの引数は以下です。 第1引数:検索対象のユーザ名(フォロワーの一覧を出したいユーザ名) |
|
IDs | getIDs | long[] | フォロワーのID一覧をlong型の配列で返却するためのメソッドです。 |
showUser | User | 指定のユーザに関する各種データを保持したUserクラスのインスタンスを返却します。具体的には下記のような情報を保持しています。 (例) ・ユーザーID ・ユーザー名 ・フォロワー数 ・いいね数 ・プロフィール情報 など他多数 |
(1-2) サンプルプログラム
(サンプルプログラム)
import twitter.CommonUtil; import twitter4j.*; import twitter4j.conf.ConfigurationBuilder; //# 引数(args[0])にフォロワーを出したい対象の「ユーザーID」を与えて下さい public final class GetFollowerTest { public static void main(String[] args) { //#### 【事前準備】API利用の設定を行うためのConfigurationBuilderインスタンス生成 ConfigurationBuilder cb = new ConfigurationBuilder(); //# キー情報の設定 CommonUtil cu = new CommonUtil(); cb.setDebugEnabled(true) .setOAuthConsumerKey(cu.ConsumerKey) .setOAuthConsumerSecret(cu.ConsumerSecret) .setOAuthAccessToken(cu.AccessToken) .setOAuthAccessTokenSecret(cu.AccessTokenSecret); //# 引数が未設定の場合はエラーにする if (args.length < 1) { System.out.println("Please give an argument [Twitter User Id]"); System.exit(-1); } try { //#### 【事前準備】各種Twitterインスタンスの生成 //# ファクトリクラスのインスタンス生成 TwitterFactory tf = new TwitterFactory(cb.build()); //# Twitterクラスのインスタンス生成 Twitter twitter = tf.getInstance(); //#### ①ユーザ情報の取得 //# (フォロワーの一覧を出したい対象のユーザ情報) User user = twitter.showUser(args[0]); int counter=1; System.out.println("#### 処理開始 ####"); //# ②ユーザ情報が取得できた場合 if (user.getStatus() != null) { //# ③フォロワーの一覧を取得 //# 検索対象のユーザのフォロワーのID一覧を取得 IDs followerIDs = twitter.getFollowersIDs(user.getScreenName(), -1); long[] ids = followerIDs.getIDs(); //# 各フォロワーを1人ずつループ for(long id : ids) { //# フォロワーの情報を取得 User follower = twitter.showUser(id); //# フォロワーの情報を表示 System.out.printf("No.%-6s ID:%-30s ScreenID:@%-15s フォロワー数:%6s 名前:%-40s\r\n",counter,follower.getId(),follower.getScreenName(),follower.getFollowersCount(),follower.getName()); counter++; } } else { //# ④ユーザ名のみ出力 //# →指定したユーザは非公開のため、フォロワー取得不可(ユーザ名のみ表示) System.out.println("====["+user.getScreenName()+"]は非公開のため、フォロワーは取得できません"); } System.out.println("#### 処理完了 ####"); System.exit(0); } catch (TwitterException te) { te.printStackTrace(); System.out.println("#### フォロワーの一覧出力に失敗しました: " + te.getMessage()); System.exit(-1); } } } class CommonUtil { String ConsumerKey = "[ご自身のConsumerKey]"; String ConsumerSecret = "[ご自身のConsumerSecret]"; String AccessToken = "[ご自身のAccessToken]"; String AccessTokenSecret = "[ご自身のAccessTokenSecret]"; }
(図121)
(図122)実行結果