Кто-нибудь знает, почему setCount () не работает в twitter4j? - PullRequest
0 голосов
/ 13 декабря 2018

Здравствуйте, я пытаюсь просто получить 1 твит, используя Twitter4j, но метод setCount () делает то, что он хочет (возможно, просто я делаю что-то не так), я оставляю свой код ниже.Я пробовал с несколькими вариантами «1», «2», «0» и независимо от того, сколько это число получает любое количество твитов от 3 до 10.

 ConfigurationBuilder cf = new ConfigurationBuilder();

    cf.setDebugEnabled(true)
            .setOAuthConsumerKey("xxx")
            .setOAuthConsumerSecret("xxxx")
            .setOAuthAccessToken("xxxx")
            .setOAuthAccessTokenSecret("xxxx");

    TwitterFactory tf = new TwitterFactory(cf.build());
    twitter4j.Twitter twitter = tf.getInstance();

    try {
        Query query = new Query("sverige");
        QueryResult result;
        do {

            query.setCount(2);
            result = twitter.search(query);
            List<Status> tweets = result.getTweets();
            for (Status tweet : tweets) {
                System.out.println("@" + tweet.getUser().getScreenName() + tweet.getFavoriteCount() + tweet.getUser().getName());
            }
        } while ((query = result.nextQuery()) != null);
        System.exit(0);
    } catch (TwitterException te) {
        te.printStackTrace();
        System.out.println("Failed to search tweets: " + te.getMessage());
        System.exit(-1);
    }

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Цикл будет продолжать запрашивать твиты, пока доступно больше твитов.Это потому, что (query = result.nextQuery()) != null верно до тех пор, пока не будут прочитаны все твиты (соответствующие запросу).setCount ограничивает только количество твитов, которые возвращает каждая операция поиска.

Когда вы отлаживаете ситуацию, подобную этой (если вы не хотите просматривать исходный код / ​​документацию), вы можете проверить, сколько раз внешнийпроисходит петля.

0 голосов
/ 13 декабря 2018

Вы получаете все твиты от этого пользователя, по 2 результата на страницу.Таким образом, если бы у них было 22 твита, вы бы получили 11 страниц по 2 твита на страницу.

query.setCount(2); // set the number of tweets per page

// get the next page until there are no more pages 
} while ((query = result.nextQuery()) != null); 
...