有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    为了增加Luke的方法,Twitter4j确实提供了查询分页。您可以尝试为查询获取多个页面。设置每页的结果和页码

    但是我建议首先尝试since_id,然后尝试分页

  2. # 2 楼答案

    需要查看您的代码以提供特定于您的案例的代码示例,但您可以通过since_idmax_id来完成此操作

    此信息用于Twitter API

    要获取以前的100条推文:

    1. 在您刚刚通过查询检索到的集合中查找最低的id
    2. max_id选项设置为刚找到的id,执行相同的查询

    要获取下一条100条推文:

    1. 在刚通过查询检索到的集合中查找最高的id
    2. since_id选项设置为刚找到的id,执行相同的查询

    在Twitter4j中,您的Query对象有两个字段表示上述API选项:sinceIdmaxId

  3. # 3 楼答案

    以下是如何获取用户的所有推文(或至少高达3200条):

    import java.util.*;
    import twitter4j.*;
    import twitter4j.conf.*;
    
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setOAuthConsumerKey("");
    cb.setOAuthConsumerSecret("");
    cb.setOAuthAccessToken("");
    cb.setOAuthAccessTokenSecret("");
    
    Twitter twitter = new TwitterFactory(cb.build()).getInstance();
    
    int pageno = 1;
    String user = "cnn";
    List statuses = new ArrayList();
    
    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) {
    
        e.printStackTrace();
      }
    }
    
    System.out.println("Total: "+statuses.size());
    
  4. # 4 楼答案

    通过使用最低id对旧页面进行迭代的某些Java代码可能如下所示:

    Query query = new Query("test");
    query.setCount(100);
    
    int searchResultCount;
    long lowestTweetId = Long.MAX_VALUE;
    
    do {
        QueryResult queryResult = twitterInstance.search(query);
    
        searchResultCount = queryResult.getTweets().size();
    
        for (Status tweet : queryResult.getTweets()) {
    
            // do whatever with the tweet
    
            if (tweet.getId() < lowestTweetId) {
                lowestTweetId = tweet.getId();
                query.setMaxId(lowestTweetId);
            }
        }
    
    } while (searchResultCount != 0 && searchResultCount % 100 == 0);
    
  5. # 5 楼答案

    You can't load more than 100 tweet per request但我不知道你为什么想要这个 您可以在“无止境页面”中加载所有推文,即每次用户滚动列表时加载10个项目

    比如说

    Query query = new Query("stackoverflow");
    query.setCount(10);// sets the number of tweets to return per page, up to a max of 100
    QueryResult  result = twitter.search(query);
    

    现在,如果您想加载下一页 简单容易

    if(result.hasNext())//there is more pages to load
    {
    query = result.nextQuery();
    result = twitter.search(query);
    }
    

    等等

  6. # 6 楼答案

    当您得到一个包含前100个结果的响应时,您也会得到下一个响应id。此id可用作查询参数“下一步”= {您从上一次通话中收到的id}再次通话时,它将为您提供接下来的100条推文