Domanda

Ho una lista di nomi utente su Twitter i cui profili sono pubblici. Vorrei ottenere "tutti i tweets" che hanno postato dal giorno hanno formato il loro profilo. Ho controllato esempi Twitter4J su GitHub .
In base alla documentazione API di Twitter, solo le 20 più recenti tweet vengono restituiti. C'è qualche cosa che potrebbe svolgere il mio compito?

È stato utile?

Soluzione

Per usare Twitter4J per ottenere tutti i messaggi di un utente si dovrà effettuare la vostra richiesta su più pagine ..

Di seguito il codice base di un esempio su 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);

Basta ciclo e mantenere afferrando nuove pagine fino a quando non ci sono nuovi messaggi dovrebbero funzionare.

Altri suggerimenti

Ecco come ottenere tutti i tweet di un utente (o almeno fino a ~ 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());
}

Se si legge attraverso il di Twitter Documentazione , è possibile recuperare fino a 200 tweets alla volta, se si specifica "count = 200" nella richiesta API.

È inoltre possibile utilizzare "page = x" per ottenere risultati diversi impaginati; si potrebbe continuare a fare questo fino a quando hai recuperato tutti i Tweet che l'utente ha pubblicato.

Non sono sicuro di come l'applicazione Java creerebbe questo, ma le richieste sarebbe probabilmente simile:

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.

Tenete a mente che queste richieste siano tasso-limitata, quindi avresti bisogno di fare attenzione a non superare il limite.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top