【问题标题】:Using Twitter4j how do i get all the list of Favorited tweets by a particulate user使用 Twitter4j 如何获取特定用户的所有收藏推文列表
【发布时间】:2015-07-21 21:19:05
【问题描述】:

我想要推特用户帐户收藏的所有推文列表。

我已经完成了一些示例代码,这些代码将为我提供用户发布的所有帖子,但我想要用户收藏的所有推文。

public List getAllTweetsOfUser(Twitter twitter, String user) {
    if (user != null && !user.trim().isEmpty()) {
        List statuses = new ArrayList();
        int pageno = 1;
        while (true) {
            try {
                int size = statuses.size();
                Paging page = new Paging(pageno++, 100);
                statuses.addAll(twitter.getUserTimeline(user, page));
                if (statuses.size() == size) {
                    break;
                }
            } catch (TwitterException e) {
            }
        }
        return statuses;
    } else {
        return null;
    }
}

谁能帮帮我..

【问题讨论】:

    标签: java twitter twitter4j


    【解决方案1】:

    您需要从 1 开始分页,然后递增页面。但是,请注意,如果您每 15 分钟超过 15 个请求(或每 15 分钟 15* 20 = 300 个状态),您将受到速率限制。

         Paging paging = new Paging(1);
            List<Status> list;
            do{
                list = twitter.getFavorites(userID, paging);
                for (Status s : list) {
                    //do stuff with s
                    System.out.println(s.getText());
                }
                paging.setPage(paging.getPage() + 1);
            }while(list.size() > 0);
    

    【讨论】:

      【解决方案2】:

      the Twitter4J samples 中的一个正是这样做的。

      public final class GetFavorites {
          /**
           * Usage: java twitter4j.examples.favorite.GetFavorites
           *
           * @param args message
           */
          public static void main(String[] args) {
              try {
                  Twitter twitter = new TwitterFactory().getInstance();
                  List<Status> statuses = twitter.getFavorites();
                  for (Status status : statuses) {
                      System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
                  }
                  System.out.println("done.");
                  System.exit(0);
              } catch (TwitterException te) {
                  te.printStackTrace();
                  System.out.println("Failed to get favorites: " + te.getMessage());
                  System.exit(-1);
              }
          }
      }
      

      【讨论】:

      • 谢谢安迪·派珀先生。但这将提供我创建令牌的 Twitter 帐户的收藏夹。但是我需要任何 twitter 用户的收藏夹来使用他的网名。但感谢您提供的信息。我将尝试对此进行一些实验。
      • 获取自己的收藏夹时是否有速率限制,就像上面提到的获取其他用户的收藏夹一样?
      • 总是有一个速率限制,是的。
      【解决方案3】:

      我已经尝试如下..

      ResponseList<Status> status = twitter.getFavorites(twitterScreenName);
      

      它给了我作为参数传递的用户最喜欢的推文。但这里的问题是我只能获得 20 个收藏夹,尽管用户有这么多推文。

      ResponseList<Status> status = twitter.getFavorites(twitterScreenName, paging);
      

      我尝试了分页,但我不确定如何使用此分页。所以我使用我的第一个代码获得了前 20 个收藏夹。如果有人尝试过,请分享信息,例如如何获取给定用户的所有收藏夹。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-23
        • 2017-02-11
        • 1970-01-01
        • 1970-01-01
        • 2019-05-07
        相关资源
        最近更新 更多