28

プロフィールが公開されているTwitterのユーザー名のリストがあります。彼らがプロフィールを作成した日から投稿した「すべてのツイート」を取得したいと思います。GitHubでTwitter4Jの例を確認しました。
Twitter APIのドキュメントによると、最新の20件のツイートのみが返されます。とにかく自分のタスクを実行できますか?

4

3 に答える 3

27

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);

ループして、新しい投稿が機能しなくなるまで新しいページを取得し続けます。

于 2010-06-01T18:46:16.767 に答える
15

ユーザーのすべてのツイート(または少なくとも最大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());
}
于 2014-11-23T06:26:19.393 に答える
6

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

...など。

これらのリクエストはレート制限されているため、制限を超えないように注意する必要があることに注意してください。

于 2010-06-01T03:25:09.303 に答える