java - twittersupport - Obtenga tweets de un perfil público de Twitter
twitter web (3)
Aquí se muestra cómo obtener TODOS los tweets para un usuario (o al 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());
}
Tengo una lista de nombres de usuarios en Twitter cuyos perfiles son públicos. Deseo obtener "todos los tweets" que han publicado desde el día en que formaron su perfil. Comprobé los ejemplos de Twitter4J en GitHub .
Según la documentación de Twitter API, solo se devuelven los 20 tweets más recientes. ¿Hay alguna forma en que pueda realizar mi tarea?
Para utilizar Twitter4J para obtener todas las publicaciones de un usuario, deberá realizar su solicitud en varias páginas.
Debajo del código basado en un ejemplo 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);
Simplemente haz un bucle y sigue agarrando nuevas páginas hasta que no haya nuevas publicaciones que funcionen.
Si lee la Documentación de Twitter , puede recuperar hasta 200 tweets a la vez si especifica "count = 200" en su solicitud de API.
También puede usar "página = x" para obtener diferentes resultados paginados; Podrías seguir haciendo esto hasta que hayas recuperado todos los tweets que el usuario ha publicado.
No estoy seguro de cómo su aplicación Java podría crear esto, pero sus solicitudes probablemente se verían así:
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.
Tenga en cuenta que estas solicitudes tienen un límite de velocidad, por lo que deberá tener cuidado de no exceder el límite.