2011-09-28 49 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]); 
}