2013年3月16日土曜日

Twitter4JでStatusNetにアクセスする

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

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

  1. import twitter4j.ResponseList;  
  2. import twitter4j.Status;  
  3. import twitter4j.Twitter;  
  4. import twitter4j.TwitterException;  
  5. import twitter4j.TwitterFactory;  
  6. import twitter4j.User;  
  7. import twitter4j.auth.BasicAuthorization;  
  8. import twitter4j.conf.Configuration;  
  9. import twitter4j.conf.ConfigurationBuilder;  
  10.   
  11. public class TwitterConsole {  
  12.     
  13.   public static void main(String[] args) {  
  14.     try {  
  15.       TwitterConsole app = new TwitterConsole();  
  16.       app.start();  
  17.     } catch(Throwable ex) {  
  18.        ex.printStackTrace(System.err);  
  19.     }  
  20.   }  
  21.   
  22.     private void start() throws TwitterException {  
  23.           
  24.     // StatusNetのAPIのBase URL  
  25.     String baseURL = "http://localhost/statusnet/api/";  
  26.   
  27.     // Twitter4J設定。APIのBase URLをStatusNetのサーバーに変更  
  28.     ConfigurationBuilder cb = new ConfigurationBuilder();  
  29.     cb.setRestBaseURL(baseURL);  
  30.     cb.setIncludeEntitiesEnabled(true);  
  31.     cb.setJSONStoreEnabled(true);  
  32.     Configuration conf = cb.build() ;  
  33.   
  34.     // Basic認証で認証する  
  35.     BasicAuthorization auth = new BasicAuthorization("username""password");  
  36.     Twitter twitter = new TwitterFactory(conf).getInstance(auth);  
  37.       
  38.     // ユーザーのタイムラインを取得  
  39.     ResponseList<status> tweets = twitter.getHomeTimeline();  
  40.   
  41.     // 取得したタイムラインを表示  
  42.     int i = 0;  
  43.     for(Status tweet : tweets) {  
  44.       i++;  
  45.       User tweetuser = tweet.getUser();  
  46.       System.out.printf("[%d] %s %s%n%s%n-----------%n",  
  47.           tweet.getId(),  // 投稿ID  
  48.           tweet.getCreatedAt().toString(),  // 投稿時刻  
  49.           tweetuser.getName(),  // 投稿者  
  50.           tweet.getText());     // 投稿内容  
  51.     }  
  52.   }  
  53. }  
  54. </status>  

0 件のコメント:

コメントを投稿