2011/10/10

最新のツイートを取得する方法



指定ユーザの最新ツイートを取得する方法を調査しました。

まず、最新のツイートを指すURIは下記となります。
http://api.twitter.com/1/statuses/user_timeline/<ユーザ名>.<形式>?count=1

<ユーザ名>・・・取得したユーザ名(ユーザID)
<形式>・・・JSON形式の場合は.json、xml形式の場合は.xml等
※count=1は一件取得する場合のクエリ。

例)Yuki_312の最新ツイートを1件JSON形式で取得した場合
http://api.twitter.com/1/statuses/user_timeline/Yuki_312.json?count=1

上記URIから、HttpURLConnectionなどを使用してツイートを取得する。
※HttpURLConnectionを使用したHTTP通信の方法は割愛

最新のツイートをbyte配列で取得した場合、下記でJSONArray型に変換すると
便利。
JSONArray json = new JSONArray(
        new String(/*最新のツイート*/recentTweet(), "UTF-8"));


JSONArray型に変換できればあとは順々にデータを取得すればOKです。
ツイート日付の取得はちょっとコツが必要。
int len = json.length();
for (int i = 0; i < len; i++) {    
    JSONObject tweet = json.getJSONObject(i);    
    String text = tweet.getString("text");    
    
    // ツイート日付の取得    
    SimpleDateFormat df = new SimpleDateFormat("EEE MMM d HH:mm:ss Z yyyy", Locale.ENGLISH);    
    df.setTimeZone(TimeZone.getTimeZone("GMT"));    
    Date created_at_en = df.parse(tweet.getString("created_at"));    
    String created_at_ja = DateFormat.getDateInstance(DateFormat.FULL, Locale.JAPAN)    
            .format(created_at_en);    
    
    JSONObject user = tweet.getJSONObject("user");    
    String screen_name = user.getString("screen_name");    
}