【Twitter4J】Twitterの全ユーザーの公開ツイート(日本のみ)を表示する方法(その1、PublicTimeline)
2012-05-04 (金) 11:02 Twitter4J
※注意(2013/04/24 追記)
このPublicTimelineはTwitter API 1.1では廃止されて使えなくなります。
今回はTwitterの全ユーザーの公開ツイート(日本のみ)を表示する方法についてです。
2つ方法があります。
1つ目の方法をこの記事で、2つ目の方法を別記事で紹介します。
まず1つ目はPublicTimelineを用いる方法です。
一度に20件取得できます。繰り返し実行することで数を増やせますね。
コードは次のようになります。
日本のツイートのみを抽出する方法については<方法1><方法2>のどちらかを使います。
この方法については次のページを参考にさせていただきました。
ありがとうございました。
→01.151a_bot - 陽昇れども地の底に光届かず
→「Java」文字列の中に日本語が含まれてるかどうかの判断
import java.util.List;
import twitter4j.*;
public class TwitterPublicTimeline {
public static void main(String[] args){
try{
//自動的に認証してくれる
//(バージョン2.2.4以降はgetInstance()ではなくgetSingleton()を推奨)
new TwitterFactory();
Twitter twitter = new TwitterFactory.getSingleton();
//パブリックタイムライン取得
List<Status> statuses = twitter.getPublicTimeline();
for (Status status : statuses) {
//statusとuserの使い分けに注意!
//タイムライン上のユーザの情報を取得
User user = status.getUser();
//※日本のツイートのみを出力する
//<方法1>
//文字列の中に日本語が含まれている場合のみ出力する
if (containsNihongo(status.getText()) == true){
//ツイートから改行記号を除去(半角スペースに変換)
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);
}
//<方法2>
//タイムゾーンが東京、大阪、札幌(Tokyo, Osaka, Sapporo)の場合のみ出力する(nullの場合に注意)
//if (user.getTimeZone() != null && (user.getTimeZone().equals("Tokyo") ||
// user.getTimeZone().equals("Osaka") ||
// user.getTimeZone().equals("Sapporo"))){
// //ツイートから改行記号を除去(半角スペースに変換)
// 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);
//}
}
} catch(TwitterException te){
te.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
}
//文字列の中に日本語が含まれているかどうかの判断
public static boolean containsNihongo(String str) {
for(int i = 0 ; i < str.length() ; i++) {
char ch = str.charAt(i);
Character.UnicodeBlock unicodeBlock = Character.UnicodeBlock.of(ch);
if (Character.UnicodeBlock.HIRAGANA.equals(unicodeBlock))
return true;
if (Character.UnicodeBlock.KATAKANA.equals(unicodeBlock))
return true;
if (Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS.equals(unicodeBlock))
return true;
if (Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS.equals(unicodeBlock))
return true;
if (Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION.equals(unicodeBlock))
return true;
}
return false;
}
}
<方法1>では文字列の中に日本語が含まれている場合のみ出力、<方法2>ではタイムゾーンが東京、大阪、札幌(Tokyo, Osaka, Sapporo)の場合のみ出力するようにして抽出をしています。
位置情報を付けてツイートする人はあまりいないし、プロフィールの場所の情報も必ずしも入っているわけではないのでこの方法にしてみました。
この場合も一長一短なので必要に応じて使い分けたり組み合わせたりする必要がありますね。
20件取得したうち日本のもののみなので数はかなり減りますね。。。
まあ、すでにウェブサービスとして同様のものがあるので単にツイートを眺めたいという場合はこちらでいいですね。
→Twitterをもっと便利にみんなとつながるサービス~meyou.jp(ミーユー)
自分でアプリを作りたい場合やツイートを分析したい場合に自分でプログラムを組むということになります。
↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。
- 関連記事
-
- ある地点の近傍のツイートの取得方法!setGeoCodeや計算による半径の指定とGeohash(ジオハッシュ)による矩形の指定 #Twitter4J (2012/12/02)
- 【Twitter4J】Twitterの全ユーザーの公開ツイート(日本のみ)を表示する方法(その2、Streaming APIのsample) (2012/05/04)
- 【Twitter4J】Twitterの全ユーザーの公開ツイート(日本のみ)を表示する方法(その1、PublicTimeline) (2012/05/04)
- 【Twitter4J】検索してその結果を表示する方法 (2012/05/02)
- 【Twitter4J】フォロー(フレンド)とフォロワーの片思い・片思われを抽出する方法 (2012/04/30)