Введение в 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.