Twitter4j — получение старых твитов для хэштега

#twitter #twitter4j

#Twitter #twitter4j

Вопрос:

Я хочу транслировать твиты из Twitter в моем java-приложении. В настоящее время я могу сделать это с помощью Twitter4J. Вот мой пример кода —

 public static void main(String args[])
{
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true);
        cb.setOAuthConsumerKey("PEBF3A1wUnNLfT83jpjGBEVNn");
        cb.setOAuthConsumerSecret("Cqcuw6xyQ2tVtkGdy76s9fQuDigyDuJwxrgMETNhfuORloNFju");
        cb.setOAuthAccessToken("2492966954-Fut0P36Enh0V1UAAVODUHSTGvYKy4lscWIEpaej");
        cb.setOAuthAccessTokenSecret("x8onfYsnZvgImnyLVd1ncwvMhwNtrieU16gTkywUZOzpP");

        TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();

        StatusListener listener = new StatusListener(){

            public void onStatus(Status status) 
            {
                System.out.println();
                System.out.println("*****************************************************************");
                User user = status.getUser();
                // gets Username
                String username = status.getUser().getScreenName();
                System.out.println(username);
                String profileLocation = user.getLocation();
                System.out.println(profileLocation);
                long tweetId = status.getId(); 
                System.out.println(tweetId);
                String content = status.getText();
                System.out.println(content  "n");
            }
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {}

            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {}

            public void onException(Exception ex) {
                ex.printStackTrace();
            }

            @Override
            public void onScrubGeo(long arg0, long arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onStallWarning(StallWarning arg0) {
                // TODO Auto-generated method stub

            }
        };

        List<String> queries = new ArrayList<String>();
        queries.add("#carb0nx");

        twitterStream.addListener(listener);
        //twitterStream.firehose(20);

        String[] trackQueries = (String[]) queries.toArray(new String[queries.size()]);

        FilterQuery filterQuery = new FilterQuery();
        twitterStream.filter(filterQuery.track(trackQueries));
}
  

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

Заранее спасибо. enter code here

Ответ №1:

Опубликованный вами код использует потоковый api. Таким образом, вы будете получать только новые твиты.

Посмотрите этот пример для старых твитов:

https://github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src/main/java/twitter4j/examples/search/SearchTweets.java

Также проверьте https://dev.twitter.com/docs/rate-limiting/1.1 для ограничения скорости REST API

Комментарии:

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

2. Проверьте этот пример для поиска прошлых твитов: github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src /…

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

4. Это возможно, но получение твитов за последний год займет много времени. На основе текущих ограничений скорости ( dev.twitter.com/docs/rate-limiting/1.1/limits ) вы можете получать только 450 твитов (для поиска) за каждые 15 минут. Если для вашего хэштега огромное количество твитов, на получение твитов в течение одного года уйдет несколько дней.

5. Время не проблема. Но я читал во многих сообщениях в блогах, что Twitter не позволяет получать твиты старше 7 дней. Знаете ли вы какой-либо пример извлечения твитов старше 7 дней для хэштега?