Twitter4Jの紹介
1概要
この記事では、Twitterと通信するためにJavaアプリケーションでhttp://twitter4j.org/en/index.html[Twitter4J]を使用する方法について説明します。
2 Twitter4J
Twitter4J
はオープンソースのJavaライブラリで、https://dev.twitter.com/docs[Twitter API]にアクセスするための便利なAPIを提供します。
簡単に言えば、これがTwitter APIと対話する方法です。私たちはできる:
-
ツイートを投稿する
-
最新のツイートのリストで、ユーザーのタイムラインを取得する
-
ダイレクトメッセージを送受信する
-
つぶやきなどを検索
このライブラリにより、これらの操作を簡単に実行できるようになり、ユーザーのセキュリティとプライバシーも確保されます。そのためには、アプリにOAuth認証情報を設定する必要があります。
3 Mavenの依存関係
pom.xml
でTwitter4Jの依存関係を定義することから始めます。
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>4.0.6</version>
</dependency>
ライブラリの新しいバージョンがリリースされたかどうかを確認するには –
https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.twitter4j%22%20AND%20a%3A%22twitter4j%
22[リリースをここで追跡]
4構成
Twitter4Jの設定は簡単で、さまざまな方法で実行できます。たとえば、プレーンテキストファイルやJavaクラス、あるいは環境変数の使用などです。
これらの各方法を1つずつ見てみましょう。
4.1. テキストファイル
構成の詳細を保持するために
twitter4j.properties
という名前のプレーンテキストファイルを使用できます。提供する必要があるプロパティを見てみましょう。
oauth.consumerKey = //your key
oauth.consumerSecret = //your secret
oauth.accessToken = //your token
oauth.accessTokenSecret =//your token secret
これらすべての属性は、https://apps.twitter.com/[新しいアプリの作成]の後にTwitter Developer consoleから取得できます。
4.2. Javaクラス
ConfigurationBuilder
クラスを使用して、Javaでプログラム的にTwitter4Jを設定することもできます。
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. 環境変数
環境変数を使用して構成することも、もう1つの選択肢です。その場合は、変数に
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 baeldung 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()を使用すると、現在のアカウントIDによって投稿されたすべてのツイートが取得されます。
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
メソッドは2つのパラメータを取ります。
-
RecipientName
:メッセージ受信者のTwitterユーザー名 -
msg
:メッセージ内容
受信者が見つからない場合、
sendDirectMessage
は例外コード
150
を付けて例外をスローします。
5.4. ツイートを検索
テキストを含むツイートを検索することもできます。これにより、ユーザーのユーザー名を含むツイートの一覧が表示されます。
このような検索がどのように実行されるかを見てみましょう。
public static List<String> searchtweets() throws TwitterException {
Twitter twitter = getTwitterinstance();
Query query = new Query("source:twitter4j baeldung");
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と共に使用するための簡単で包括的な入門書です。
示されている例の実装
は見つけることができます
on GitHub
– これはMavenベースのプロジェクトなので、簡単にできます。
そのままインポートして実行します。 ** 私達がする必要がある唯一の変更は私達のを挿入することです
独自のOAuth認証情報