【问题标题】:Twitter4J: Get more than 1 tweet from a userTwitter4J:从用户那里获得超过 1 条推文
【发布时间】:2011-09-28 10:01:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: java twitter4j


    【解决方案1】:

    我只是想自己找到这个答案。我使用 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();
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-06
        相关资源
        最近更新 更多