プロフィールが公開されているTwitterのユーザー名のリストがあります。彼らがプロフィールを作成した日から彼らが投稿した「すべてのつぶやき」を入手したいと思います。 GitHub でTwitter4Jの例を確認しました。
Twitter APIドキュメントによると、最新の20件のツイートのみが返されます。とにかく自分の仕事を実行できますか?
Twitter4Jを使用してユーザーからすべての投稿を取得するには、複数のページでリクエストを行う必要があります。
例に基づいた以下のコード GitHub上
Twitter unauthenticatedTwitter = new TwitterFactory().getInstance();
//First param of Paging() is the page number, second is the number per page (this is capped around 200 I think.
Paging paging = new Paging(1, 100);
List<Status> statuses = unauthenticatedTwitter.getUserTimeline("google",paging);
ループして、新しい投稿が機能しなくなるまで新しいページを取得し続けます。
ここでは、ユーザー(または少なくとも最大3200)のすべてのツイートを取得する方法を示します。
import Java.util.*;
import Twitter4j.*;
import Twitter4j.conf.*;
public static void main(String[] a) {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("YOUR KEYS HERE");
cb.setOAuthConsumerSecret("YOUR KEYS HERE");
cb.setOAuthAccessToken("YOUR KEYS HERE");
cb.setOAuthAccessTokenSecret("YOUR KEYS HERE");
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
int pageno = 1;
String user = "cnn";
List statuses = new ArrayList();
while (true) {
try {
int size = statuses.size();
Paging page = new Paging(pageno++, 100);
statuses.addAll(Twitter.getUserTimeline(user, page));
if (statuses.size() == size)
break;
}
catch(TwitterException e) {
e.printStackTrace();
}
}
System.out.println("Total: "+statuses.size());
}
Twitterのドキュメント を読んだ場合、APIリクエストで「count = 200」を指定すると、一度に最大200のツイートを取得できます。
"page = x"を使用して、さまざまなページ分割された結果を取得することもできます。ユーザーが投稿したすべてのツイートを取得するまで、これを続けることができます。
あなたのJavaアプリケーションがこれをどのように作成するかはわかりませんが、あなたのリクエストはおそらく次のようになります:
http://api.Twitter.com/1/statuses/user_timeline.xml?id=SomeUsername&count=200&page=1
http://api.Twitter.com/1/statuses/user_timeline.xml?id=SomeUsername&count=200&page=2
http://api.Twitter.com/1/statuses/user_timeline.xml?id=SomeUsername&count=200&page=3
...など.
これらのリクエストはレート制限されているため、制限を超えないように注意する必要があることに注意してください。