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

Était-ce utile?

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

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);

boucle juste et garder saisir de nouvelles pages jusqu'à ce qu'il n'y a pas de nouveaux messages doivent travailler.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top