【Twitter4J】Twitterの全ユーザーの公開ツイートを表示する方法


Twitter4Jを用いて、Twitterの全ユーザーの公開ツイートを取得する方法です。

Streaming APIのsampleを使います。

Twitter Streaming APIとは

Twitter Streaming APIとは、データ解析などで大量のデータを必要とする開発者のために用意されたAPIで、一度接続するとHTTP接続を保ったまま自動的にデータを流し続けてくれます。
Streaming APIには次の種類があります。

1.Streamed Tweets…パブリックなツイートを取得
 ・sample…パブリックなツイートから約1%のツイート
 ・firehose…すべてのパブリックなツイート
 ・filter…指定した条件にマッチするツイート
 ・links…リンクを含むツイート
 ・retweet…リツイート

2.ユーザーストリーム…ユーザーのタイムライン、@関連、DMなどを取得

3.サイトストリーム…多数のユーザーのタイムライン、@関連、DMなどを受信
           多数のユーザー向けのWebサービス用

単にTwitterの全ユーザーの公開ツイートがほしい場合はsample、firehoseとなります。
ただ、firehoseはグーグルなどの一部の大企業が大金を払って手に入れることができるだけなので個人で行う場合はsampleを使うことになります。
全体の約1%のツイートになりますが、常時データを取得できるので少ないと考えるか十分と考えるかは時と場合によりますね。

コード例

ではコードです。

import twitter4j.*;


public class TwitterSampleStream {

    public static void main(String[] args){

        try{

            //自動的に認証してくれる
            //(バージョン2.2.4以降はgetInstance()ではなくgetSingleton()を推奨)
            new TwitterStreamFactory();
            TwitterStream twitterstream = TwitterStreamFactory.getSingleton();

            twitterstream.addListener(new MyStatusAdapter());
            twitterstream.sample();

        } catch(Exception e){
            e.printStackTrace();
        }
    }
}

//コンソールに出力する
class MyStatusAdapter extends StatusAdapter {

    public void onStatus(Status status){

        //ユーザの情報を取得
        User user = status.getUser();

        //ツイートから改行記号を除去(半角スペースに変換)
        String strText = status.getText();
        strText = strText.replaceAll("\r\n"," ");
        strText = strText.replaceAll("\r"," ");
        strText = strText.replaceAll("\n"," ");

        //ツイートからタブ記号を除去(半角スペースに変換)
        strText = strText.replaceAll("\t"," ");

        //コンソールに出力する(タイムゾーン、位置情報、日時、ユーザ名、ツイート)
        System.out.println(user.getTimeZone() + "\t" + status.getGeoLocation() + "\t" + status.getCreatedAt() + "\t" + user.getScreenName() + "\t" + strText);
    }
}

応用

てぃーはこの方法を応用して、ツイッターの曜日別ツイートやよく使われるアプリなどを分析しています。分析結果はネットで評判になったり、学術研究に利用されています!
 →【分析】ツイッター分析のシリーズの目次 by Twitter4J - creativi.tea