Pregunta

Tengo una lista de nombres de usuario en Twitter cuyos perfiles son públicos. Deseo obtener "todos los tweets" se han publicado desde el día formaron su perfil. Comprobé ejemplos Twitter4J en GitHub .
de acuerdo con la documentación de la API de Twitter, sólo se devuelven los 20 tweets más recientes. ¿Hay alguna forma podría realizar mi tarea?

¿Fue útil?

Solución

Para usar Twitter4J para obtener todos los mensajes de un usuario que tendrá que hacer su solicitud a través de múltiples páginas ..

A continuación código basado de un ejemplo en 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);

Sólo bucle y mantener el acaparamiento de nuevas páginas hasta que no hay nuevos mensajes deben trabajar.

Otros consejos

Aquí es cómo conseguir que todos los tweets de un usuario (o por lo menos hasta ~ 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());
}
scroll top