Перейти к основному содержимому

Введение в Twitter4J

· 5 мин. чтения

1. Обзор

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

2. Твиттер4Дж

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

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

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

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

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

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

<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>4.0.6</version>
</dependency>

Чтобы проверить, не вышла ли какая-нибудь новая версия библиотеки — отслеживайте релизы здесь .

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 после того, как вы создадите новое приложение .

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. Опубликовать твит

Мы начнем с обновления твита в Твиттере:

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

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

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

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

public List<String> 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<String> searchtweets() throws TwitterException {

Twitter twitter = getTwitterinstance();
Query query = new Query("source:twitter4j foreach");
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.

Реализацию показанных примеров можно найти на GitHub — это проект на основе Maven, поэтому его легко импортировать и запускать как есть. Единственное изменение, которое нам нужно сделать, это вставить наши собственные учетные данные OAuth.