2011-09-28 27 views
1

我試圖從追隨者的人員名單上的每個用戶獲得最新狀態的列表,獲得超過1個鳴叫。我有以下來獲得用戶...Twitter4J:從用戶

IDs list = twitter.getFriendsIDs(0); 
    for(long ID : list.getIDs()){ 
     twitter4j.User TW_user = twitter.showUser(ID); 
} 

我能得到這個getStatus()這是他們最近的狀態。 getHomeTimeline()也不足,因爲我需要每個用戶最近發佈的推文列表。無論如何,我可以通過Twitter4J實現這一目標嗎?

回答

2

我只是想找到答案自己。我使用getUserTimeline方法取得了不錯的成功。看起來你想查找一個朋友ID列表,所以下面的這個方法應該用long []並吐出所有的用戶狀態。如果你想用這種方式來看用戶,lookupUsers也接受一個String []的屏幕名稱。

public static void lookupUsers(long[] usersList) { 
    try { 
     Twitter twitter = new TwitterFactory().getInstance(); 
     ResponseList<User> users = twitter.lookupUsers(usersList); 
     Paging paging = new Paging(1, 100); 
     List<Status> statuses; 

     for (User user : users) { 
      statuses = twitter.getUserTimeline(user.getScreenName(), paging); 
      System.out.println("\nUser: @" + user.getScreenName()); 
      for (Status s : statuses) { 
       System.out.println(s.getText()); 
      } 

     } 
    } catch (TwitterException e) { 
     e.printStackTrace(); 
    } 
} 
0

Alex的回答很接近,但是每個用戶只會得到100條推文。下面將讓你的所有(或至少API的最大限制):

IDs list = twitter.getFriendsIDs(0); 
for(long ID : list.getIDs()) { 

    Status[] tweets = getAllTweets(twitter, ID); 
    System.out.println(ID + ": " + tweets.length); 
} 

Status[] getAllTweets(Twitter twitter, long userId) 
{ 
    int pageno = 1; 
    List statuses = new ArrayList(); 

    while (true) 
    { 
     try 
     { 

     int size = statuses.size(); 
     Paging page = new Paging(pageno++, 100); 
     statuses.addAll(twitter.getUserTimeline(userId, page)); 
     if (statuses.size() == size) 
      break; 
     } 
     catch (TwitterException e) 
     { 

     e.printStackTrace(); 
     } 
    } 

    return (Status[]) statuses.toArray(new Status[0]); 
}