パブリックツイッタープロフィールのツイートを取得します
質問
プロファイルが公開されているTwitterにユーザー名のリストがあります。私は彼らが彼らのプロフィールを形成した日から投稿した「すべてのツイート」を取得したいと思います。 Twitter4Jの例を確認しました github.
Twitter APIドキュメントによると、最新のツイートのみが返されます。とにかく私は自分の仕事を実行できましたか?
解決
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
...など。
これらの要求は料金制限されているため、制限を超えないように注意する必要があることに注意してください。
所属していません StackOverflow