Подтвердить что ты не робот

Можно ли получить более 100 твитов?

Можно ли получить более 100 твитов с помощью API Twitter4j?
Если да, то кто-нибудь может указать способ сделать это?

4b9b3361

Ответ 1

Вам нужно будет увидеть, что ваш код предоставляет пример кода, характерный для вашего случая, но вы можете сделать это через since_id или max_id.

Эта информация предназначена для API Twitter.

Чтобы получить предыдущие 100 твитов:

  • найдите самый низкий идентификатор в наборе, который вы только что получили с помощью своего запроса.
  • выполнить тот же запрос с опцией max_id, установленной на найденный вами идентификатор.

Чтобы получить следующие 100 твитов:

  • найдите наивысший идентификатор в наборе, который вы только что получили с помощью вашего запроса.
  • выполнить тот же запрос с опцией since_id, установленной на найденный вами идентификатор.

В Twitter4j ваш объект Query имеет два поля, которые представляют указанные выше параметры API: sinceId и maxId.

Ответ 2

Вы не можете загрузить более 100 твитов за запрос, но я не знаю, зачем вам это нужно, вместо этого вы можете загружать все твиты в "Бесконечную страницу", загружая 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);
}

и т.д.

Ответ 3

Некоторое 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);

Ответ 4

Вот как получить ВСЕ твиты для пользователя (или, по крайней мере, до ~ 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());

Ответ 5

Чтобы добавить к подходу Люка, Twitter4j действительно обеспечивает разбиение на страницы запросов. Вы можете попробовать получить более одного страницы для вашего запроса. Задайте результаты на странице и номер страницы.

Но я предлагаю сначала попробовать since_id, а затем попробуйте разбиение на страницы.

Ответ 6

Для данного запроса можно извлечь более 100 твитов. Для быстрой демонстрации вы можете загрузить графическое приложение twitter для извлечения твитов, доступное по адресу http://preciselyconcise.com/apis_and_installations/tweets_extraction_from_twitter.php.

Извлекая результаты запроса со всех доступных страниц для этого запроса, вы сможете извлечь более 100 твитов, если они доступны в этом запросе. Я загрузил приложение GUI, доступное на этом веб-сайте, и я смог извлечь более 1000 твитов для запроса #happy.

Ответ 7

Когда вы получаете ответ, содержащий ваши первые 100 результатов, вы также получаете следующий идентификатор с ответом. Этот идентификатор можно использовать в качестве параметра запроса "next" = {идентификатор, который вы получили от предыдущего вызова} при повторном вызове, и он даст вам следующие 100 твитов.