Twitter4Jの概要
1. 概要
この記事では、JavaアプリケーションでTwitter4Jを使用してTwitterと通信する方法について説明します。
2. Twitter4J
Twitter4JはオープンソースのJavaライブラリであり、Twitter APIにアクセスするための便利なAPIを提供します。
簡単に言えば、TwitterAPIを操作する方法は次のとおりです。我々はできる:
-
ツイートを投稿する
-
最新のツイートのリストを使用して、ユーザーのタイムラインを取得する
-
ダイレクトメッセージを送受信する
-
ツイートなどの検索
このライブラリにより、これらの操作を簡単に実行できるようになり、ユーザーのセキュリティとプライバシーも保証されます。当然、アプリでOAuth資格情報を構成する必要があります。
3. Mavenの依存関係
pom.xmlでTwitter4Jの依存関係を定義することから始める必要があります。
org.twitter4j
twitter4j-stream
4.0.6
ライブラリの新しいバージョンがリリースされているかどうかを確認するには–track the releases here。
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
これらの属性はすべて、make a new appの後にTwitterDeveloperコンソールから取得できます。
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 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(),を使用すると、現在のアカウント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 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. 結論
この記事は、JavaでTwitter4Jを使用するための迅速かつ包括的な紹介でした。
示されている例の実装can be found on GitHub –これはMavenベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。 The only change we need to do is to insert our own OAuth credentials.