2016-07-18 16 views
0

ich diesen einfachen Code schreiben für Tweets von TwitterTwitter4J für das Erhalten Tweets

public static void main(String[] args) throws TwitterException { 
     // TODO code application logic here 
     ConfigurationBuilder cb = new ConfigurationBuilder(); 
     cb.setDebugEnabled(true) 
       .setOAuthConsumerKey("**********") 
       .setOAuthConsumerSecret("**************") 
       .setOAuthAccessToken("***************") 
       .setOAuthAccessTokenSecret("**************"); 

     TwitterFactory tf= new TwitterFactory(cb.build()); 
     twitter4j.Twitter tw= tf.getInstance(); 

     List<Status> statuses = tw.getHomeTimeline(); 
     for(Status status1 : statuses){ 
     System.out.println(status1.getUser().getName()+ " : "+ status1.getText()); 

     } 

Aber ich will immer über 4000 Tweets in Urdu Sprache erhalten. Ich weiß nicht wie. Bitte helfen Sie mir

Antwort

0

Mit diesem Code, den Sie nur Tweets aus der Timeline des Registers Benutzer erhalten wird, von Twitter4j:

ResponseList getHomeTimeline() Gibt die letzten 20 Zustände, einschließlich Retweets, von der entsandte Benutzer authentifizieren und die Freunde dieses Benutzers. Dies ist das Äquivalent/Timeline/home auf dem Web „

Wenn Sie mindestens 4000 Tweets in Urdu bekommen möchten, dass Sie mehrere Dinge tun könnten, zum Beispiel Sie den Probenstrom von Twitter bekommen konnte.

ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true) 
      .setOAuthConsumerKey("**********") 
      .setOAuthConsumerSecret("**************") 
      .setOAuthAccessToken("***************") 
      .setOAuthAccessTokenSecret("**************"); 
     TwitterStream twitterStream = new TwitterStreamFactory(cb.build()) 
        .getInstance(); 
      StatusListener listener = new StatusListener() { 

       @Override 
       public void onStatus(Status status) { 

        System.out.println("@"+status.getUser().getScreenName()+": "+status.getText()); 
        // HERE YOU STORE YOUR TWEETS 
       } 

       @Override 
       public void onException(Exception ex) { 
        ex.printStackTrace(); 
       } 

       @Override 
       public void onDeletionNotice(StatusDeletionNotice arg0) { 
        // TODO Auto-generated method stub 
       } 

       @Override 
       public void onScrubGeo(long arg0, long arg1) { 

       } 

       @Override 
       public void onStallWarning(StallWarning arg0) { 
        // TODO Auto-generated method stub 
        System.out.println(arg0); 
       } 

       @Override 
       public void onTrackLimitationNotice(int arg0) { 
        // TODO Auto-generated method stub 
        System.out.println(arg0); 
       } 
      }; 
     twitterStream.addListener(listener); 
     twitterStream.sample("ur"); 

bis Sie die 4000 Tweets, die Sie wollen.

+0

Thank you sir so viel überprüfen. das ist ziemlich interessant. eigentlich sir, ich bin neu dazu, ich möchte meine MS-Forschung auf Sentiment-Analyse für das mache ich Datensatz. meine Frage ist kann ich die Tweets zugreifen, die bereits getwittert sind oder Kommentare zu einem Produkt usw. –

+0

Sie könnten Twitter4j verwenden, um Tweets zu suchen (http://stackoverflow.com/questions/13545936/twitter4j-search-for-public- Tweets) aber bedenke, dass du nur Tweets der letzten Tage abrufen kannst. Sie können auch die letzten Tweets von einem bestimmten Benutzer erhalten (http://stackoverflow.com/questions/2449724/twitter4j-get-all-statuses-from-twitter-account). Tu, was immer du für besser geeignet hältst! – FeanDoe

+0

FeanDoe Sir vielen Dank. –

0

können Sie twitter Suche verwenden, anstatt nur bestimmten Benutzers Tweets zu bekommen. Was ich für immer Tweets in türkischer Sprache getan haben, ist nur erweiterte Suchfunktion ist mit twitter In meiner Situation hinzufügen lang:tr nach angegebener Suchphrase gab mir Tweets in türkischer Sprache zurück. Sie können lang:ur anstelle von lang:tr verwenden, um Tweets in Urdu Language zu erhalten.

Hier ist mein Code:

public class TwitterDataGetter implements Runnable { 
    private Thread twitterDataGetterThread; 

    final static Logger logger = Logger.getLogger(TwitterDataGetter.class); 

    public TwitterDataGetter() { 
     try { 
      ConfigurationBuilder cb = new ConfigurationBuilder(); 
      cb.setDebugEnabled(true); 
      cb.setOAuthConsumerKey("your consumer key"); 
      cb.setOAuthConsumerSecret("your consumer secret"); 
      cb.setOAuthAccessToken("your access token"); 
      cb.setOAuthAccessTokenSecret("your access token secret"); 
      cb.setIncludeEntitiesEnabled(true); 

      this.twitter = new TwitterFactory(cb.build()).getInstance(); 

      logger.info("Twitter API Configuration Successful"); 
     } catch (Exception e) { 
      logger.error("Twitter API Configuration Error", e); 
     } 
    } 

    public void getTweet(String keyword){ 
     List<Status> statuses = null; 
     Query query; 
     QueryResult result; 

     try { 
      query = new Query(keyword + " lang:tr"); 
      query.setCount(100); 
      do { 
       final long startTime = System.nanoTime(); 
       result = twitter.search(query); 
       statuses = result.getTweets(); 
       for (Status status : statuses) { 
        System.out.println(status.getText()); 
       } 

       final long duration = System.nanoTime() - startTime; 
       if((5500 - duration/1000000) > 0){ 
        Thread.sleep((5500 - duration/1000000)); 
       } 
      } while ((query = result.nextQuery()) != null); 
     } catch (TwitterException e) { 
      logger.error("TwitterException", e); 
     } catch (InterruptedException e) { 
      logger.error("InterruptedException", e); 
      throw new RuntimeException(e); 
     } 
    } 

    @Override 
    public void run() { 
     while(true){ 
      this.getTweet(""); 
     } 
    } 

    public void start(){ 
     if(twitterDataGetterThread == null){ 
      twitterDataGetterThread = new Thread(this, "Twitter Thread"); 
     } 
     twitterDataGetterThread.start(); 
     logger.info("Twitter Thread started"); 
    } 

} 

Aufruf getTweet (String Stichwort) -Methode mit leeren String zurück neuesten Tweets in Ihrer Sprache, ohne sie mit jedem Stichwort zu filtern.

Ich hoffe, es hilft.

PS: Sie können auch Suchergebnisse für Ihre Sprache aus diesem Link https://twitter.com/search?f=tweets&vertical=default&q=lang%3Aur