//package twitter.misc;
/*
** Twitter REST API の statuses/followers メソッドを利用して,
** 指定したユーザのフォロワーを収集する.
**
** [statuses/followers の説明ページ]
** http://apiwiki.twitter.com/w/page/22554748/Twitter-REST-API-Method:-statuses%C2%A0followers
**
** [変更履歴]
** 2011.04.18 とりあえず動くバージョンを作成.
*/
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.*;
import java.util.List;
import java.util.ArrayList;
import org.json.*;
public class Followers {
static List < String > m_FollowerList = new ArrayList < String > ();
static String getFollowers (String username, String cursor) {
String next_cursor = "";
try {
String urlString =
"http://api.twitter.com/1/statuses/followers/" + username +
".json?cursor=" + cursor;
URL url = new URL (urlString);
HttpURLConnection connection =
(HttpURLConnection) url.openConnection ();
// レスポンスコード
//System.err.printf("%d %s\n", connection.getResponseCode(), connection.getResponseMessage());
// レスポンス == HTTP_OK ならば,
// JSON データからフォロワーのスクリーン名を取得する
if (connection.getResponseCode () == HttpURLConnection.HTTP_OK) {
BufferedReader br =
new BufferedReader (new
InputStreamReader (connection.
getInputStream (),
"UTF-8"));
String line = br.readLine ();
//System.err.println(line); //デバッグ用
try {
JSONObject json = new JSONObject (line);
JSONArray followers = json.getJSONArray ("users");
// next_cursor の値を long で取れないため,
// next_cursor_str を参照する.
next_cursor = json.getString ("next_cursor_str");
for (int i = 0; i < followers.length (); i++) {
JSONObject follower = (JSONObject) followers.get (i);
String user = follower.getString ("screen_name");
m_FollowerList.add (user); //リストへ追加
//System.err.println(user); //デバッグ用
}
} catch (JSONException e) {
System.err.println (e);
}
}
} catch (Exception e) {
e.printStackTrace ();
}
return next_cursor;
}
public static void main (String[]args) {
String username = "スクリーンネーム";
String cursor = "-1";
do {
cursor = getFollowers (username, cursor);
} while (cursor.equals ("0") == false);
System.out.println ("# of followers : " + m_FollowerList.size ());
for (int i = 0; i < m_FollowerList.size (); i++) {
System.out.println (m_FollowerList.get (i));
}
}
}