Obtenez tweets d'un profil public twitter
Question
J'ai une liste de noms d'utilisateur sur Twitter dont les profils sont publics. Je souhaite obtenir « tous les tweets » qu'ils ont publiés depuis le jour où ils ont formé leur profil. J'ai vérifié des exemples twitter4j sur
La solution Pour utiliser Twitter4J pour obtenir tous les messages d'un utilisateur que vous devrez faire votre demande sur plusieurs pages .. Ci-dessous le code à base d'un exemple sur GitHub boucle juste et garder saisir de nouvelles pages jusqu'à ce qu'il n'y a pas de nouveaux messages doivent travailler. 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);
Autres conseils
Voici comment obtenir tous les tweets pour un utilisateur (ou au moins jusqu'à ~ 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());
}
Si vous lisez la documentation du Twitter , vous pouvez récupérer jusqu'à 200 tweets à la fois si vous spécifiez « count = 200 » dans votre requête API.
Vous pouvez également utiliser « page = x » pour obtenir des résultats différents paginés; vous pouvez continuer à le faire jusqu'à ce que vous avez récupéré chaque tweet que l'utilisateur a posté.
Je ne sais pas comment votre application Java serait de créer, mais vos demandes chercherais probablement comme:
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.
Gardez à l'esprit que ces demandes sont limitées à taux et vous auriez besoin de faire attention à ne pas dépasser la limite.