Frage

habe ich eine Liste von Benutzernamen auf Twitter, deren Profile sind öffentlich. Ich wünsche „alle Tweets“ bekommen sie ab dem Tag veröffentlicht sie ihr Profil gebildet. Ich habe Twitter4J Beispiele auf

War es hilfreich?

Lösung

Twitter4J So verwenden alle Beiträge von einem Benutzer bekommen Sie Ihre Anfrage über mehrere Seiten ..

machen müssen

Im Folgenden Code anhand eines Beispiels auf 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);

Just Schleife und halten sich ziehen neue Seiten, bis es keine neuen Beiträge sind sollte funktionieren.

Andere Tipps

Hier ist, wie alle Tweets für einen Benutzer zu bekommen (oder zumindest bis zu ~ 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());
}

Wenn Sie das lesen Sie Twitters Dokumentation , können Sie abrufen bis zu 200 Tweets zu einer Zeit, wenn Sie angeben, "count = 200" in der API-Anfrage.

Sie können auch verwenden „page = x“ verschiedenen paginierte Ergebnisse zu erhalten; Sie könnte dies zu tun, bis Sie jeden tweet der Benutzer geschrieben hat abgerufen haben.

Ich bin nicht sicher, wie Sie Ihre Java-Anwendung dies schaffen würde, aber Ihre Anfragen würde wahrscheinlich wie folgt aussehen:

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

... etc.

Beachten Sie, dass diese Anforderungen sind geschwindigkeits beschränkt, so dass Sie müssen vorsichtig sein, würde nicht die Grenze zu überschreiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top