Введение в Twitter4J

Введение в Twitter4J

1. обзор

В этой статье мы рассмотрим использованиеTwitter4J в приложении Java для связи с Twitter.

2. Twitter4J

Twitter4J - это библиотека Java с открытым исходным кодом, которая предоставляет удобный API для доступа кTwitter API.

Проще говоря, вот как мы можем взаимодействовать с Twitter API. мы можем:

  • Опубликовать твит

  • Получить временную шкалу пользователя со списком последних твитов

  • Отправлять и получать прямые сообщения

  • Поиск твитов и многое другое

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

3. Maven Зависимости

Нам нужно начать с определения зависимости для Twitter4J в нашемpom.xml:


    org.twitter4j
    twitter4j-stream
    4.0.6

Чтобы проверить, выпущена ли какая-либо новая версия библиотеки -track the releases here.

4. конфигурация

Настройка Twitter4J проста и может быть выполнена различными способами - например, в виде простого текстового файла или класса Java или даже с использованием переменных среды.

Давайте рассмотрим каждый из этих способов по очереди.

4.1. Обычный текстовый файл

Мы можем использовать простой текстовый файл с именемtwitter4j.properties для хранения деталей нашей конфигурации. Давайте посмотрим на свойства, которые необходимо предоставить:

oauth.consumerKey =       // your key
oauth.consumerSecret =    // your secret
oauth.accessToken =       // your token
oauth.accessTokenSecret = // your token secret

Все эти атрибуты можно получить из консоли разработчика Twitter после того, как выmake a new app.

4.2. Java класс

Мы также можем использовать классConfigurationBuilder для программной настройки Twitter4J на Java:

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
  .setOAuthConsumerKey("your consumer key")
  .setOAuthConsumerSecret("your consumer secret")
  .setOAuthAccessToken("your access token")
  .setOAuthAccessTokenSecret("your access token secret");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();

Обратите внимание, что мы будем использовать экземплярTwitter в следующем разделе - когда мы начнем получать данные.

4.3. Переменные среды

Конфигурирование через переменные среды - это еще один выбор, который у нас есть. Если мы это сделаем, обратите внимание, что нам понадобится префиксtwitter4j в наших переменных:

$ export twitter4j.oauth.consumerKey =       // your key
$ export twitter4j.oauth.consumerSecret =    // your secret
$ export twitter4j.oauth.accessToken =       // your access token
$ export twitter4j.oauth.accessTokenSecret = // your access token secret

5. Добавление / получение данных твита в реальном времени

С полностью настроенным приложением мы наконец можем взаимодействовать с Twitter.

Давайте посмотрим на несколько примеров.

5.1. Опубликовать твит

Начнем с обновления твита в Twitter:

public String createTweet(String tweet) throws TwitterException {
    Twitter twitter = getTwitterinstance();
    Status status = twitter.updateStatus("creating example API");
    return status.getText();
}

Используяstatus.getText(),, мы можем получить только что опубликованный твит.

5.2. Получить временную шкалу

Мы также можем получить список твитов с временной шкалы пользователя:

public List getTimeLine() throws TwitterException {
    Twitter twitter = getTwitterinstance();

    return twitter.getHomeTimeline().stream()
      .map(item -> item.getText())
      .collect(Collectors.toList());
}

Используяtwitter.getHomeTimeline(),, мы получаем все твиты, отправленные с идентификатором текущего аккаунта.

5.3. Отправить личное сообщение

Отправка и получение прямого сообщения подписчикам также возможно с помощью Twitter4j:

public static String sendDirectMessage(String recipientName, String msg)
  throws TwitterException {

    Twitter twitter = getTwitterinstance();
    DirectMessage message = twitter.sendDirectMessage(recipientName, msg);
    return message.getText();
}

МетодsendDirectMessage принимает два параметра:

  • RecipientName: имя пользователя Twitter получателя сообщения

  • msg: содержание сообщения

Если получатель не будет найден,sendDirectMessage вызовет исключение с кодом исключения150.

5.4. Поиск твитов

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

Давайте посмотрим, как можно выполнить такой поиск:

public static List searchtweets() throws TwitterException {

    Twitter twitter = getTwitterinstance();
    Query query = new Query("source:twitter4j example");
    QueryResult result = twitter.search(query);

    return result.getTweets().stream()
      .map(item -> item.getText())
      .collect(Collectors.toList());
}

Ясно, что мы можем перебирать каждый твит, полученный вQueryResult, и получать относительные данные.

5.5. API потоковой передачи

Twitter Streaming API полезен, когда требуются обновления в реальном времени; он обрабатывает создание потоков и прослушивает события.

Давайте создадим слушателя, который будет слушать обновления твитов от пользователя:

public static void streamFeed() {

    StatusListener listener = new StatusListener() {

        @Override
        public void onException(Exception e) {
            e.printStackTrace();
        }
        @Override
        public void onDeletionNotice(StatusDeletionNotice arg) {
        }
        @Override
        public void onScrubGeo(long userId, long upToStatusId) {
        }
        @Override
        public void onStallWarning(StallWarning warning) {
        }
        @Override
        public void onStatus(Status status) {
        }
        @Override
        public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
        }
    };

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

    twitterStream.addListener(listener);

    twitterStream.sample();
}

Мы можем поместить некоторый операторprintln() для проверки выходного потока твитов во всех методах. Все твиты имеют метаданные местоположения, связанные с ним.

Обратите внимание, что все данные твитов, извлекаемые API, имеют формат UTF-8, и, поскольку Twitter является многоязычной платформой, некоторые форматы данных могут быть неузнаваемыми в зависимости от их происхождения.

6. Заключение

Эта статья была быстрым, но всесторонним введением в использование Twitter4J с Java.

Реализация показанных примеровcan be found on GitHub - это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть. The only change we need to do is to insert our own OAuth credentials.