2013年3月16日土曜日

Twitter4JでStatusNetにアクセスする

前回の記事でTwitter風のマイクロブログStatusNetをWindows環境に立ち上たが、今回はこれにJavaプログラムからアクセスしてみる。 StatusNetはTwitter準拠のAPIを持っているとのことなのでJavaでTwitterにアクセスするためのライブラリTwitter4Jが使えないかと思い試してみることにした。

結果としては以下のようなコードでユーザーのタイムラインが取得できた。 StatusNetはBasic認証でも認証ができるので今回はその方法を使った。

import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;
import twitter4j.auth.BasicAuthorization;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;

public class TwitterConsole {
  
  public static void main(String[] args) {
    try {
      TwitterConsole app = new TwitterConsole();
      app.start();
    } catch(Throwable ex) {
       ex.printStackTrace(System.err);
    }
  }

    private void start() throws TwitterException {
        
    // StatusNetのAPIのBase URL
    String baseURL = "http://localhost/statusnet/api/";

    // Twitter4J設定。APIのBase URLをStatusNetのサーバーに変更
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setRestBaseURL(baseURL);
    cb.setIncludeEntitiesEnabled(true);
    cb.setJSONStoreEnabled(true);
    Configuration conf = cb.build() ;

    // Basic認証で認証する
    BasicAuthorization auth = new BasicAuthorization("username", "password");
    Twitter twitter = new TwitterFactory(conf).getInstance(auth);
    
    // ユーザーのタイムラインを取得
    ResponseList tweets = twitter.getHomeTimeline();

    // 取得したタイムラインを表示
    int i = 0;
    for(Status tweet : tweets) {
      i++;
      User tweetuser = tweet.getUser();
      System.out.printf("[%d] %s %s%n%s%n-----------%n",
          tweet.getId(),  // 投稿ID
          tweet.getCreatedAt().toString(),  // 投稿時刻
          tweetuser.getName(),  // 投稿者
          tweet.getText());     // 投稿内容
    }
  }
}

0 件のコメント:

コメントを投稿