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.