Twitter4J:从用户那里获得超过1条推文

时间:2011-09-28 10:01:40

标签: java twitter4j

我正在尝试从关注者列表中获取每个用户的最新状态列表。我有以下内容来吸引用户......

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

我所能得到的只是getStatus(),这是他们最近的状态。 getHomeTimeline()也不够,因为我需要每个用户的最新推文列表。无论如何我可以用Twitter4J实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

我只是想自己找到这个答案。我使用getUserTimeline方法取得了不错的成功。看起来您正在尝试查找朋友ID列表,因此下面的方法应该使用long []并吐出所有用户状态。如果你想以这种方式查看用户,lookupUsers也接受一个字符串[]的屏幕名称。

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();
    }
}

答案 1 :(得分:0)

亚历克斯的答案很接近,但每个用户只会得到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]);
 }