2016-04-15 7 views
1

私はリアルタイムでつぶやきを聞きたいので、誰かがつぶやくときにそのつぶやきを見たいと思っています。つぶやきをリアルタイムで聞きます

しかし、twitter4jライブラリを使用して私のニュースフィードからツイートを取得することができました。 コードは次のとおりです。

package twitteroperation; 

import java.util.List; 
import twitter4j.Status; 
import twitter4j.TwitterException; 
import twitter4j.TwitterFactory; 
import twitter4j.conf.ConfigurationBuilder; 

public class TwitterOperation { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) throws TwitterException { 


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

     } 
    } 
} 

私は、リアルタイムのつぶやきにアクセスするためにストリーミングAPIを使用する必要があることを発見しました。しかし、私はteal-timeのつぶやきにアクセスするためにjavaでサンプルコードを見つけることができませんでした。

答えて

2

あなたは、あなたがプロパティを設定する必要がありますない場合しかし、あなたは

 ConfigurationBuilder cb = new ConfigurationBuilder(); 
     cb.setDebugEnabled(true).setOAuthConsumerKey("") 
       .setOAuthConsumerSecret("") 
       .setOAuthAccessToken("") 
       .setOAuthAccessTokenSecret(""); 

     TwitterStream twitterStream = new TwitterStreamFactory(cb.build()) 
       .getInstance(); 

でライン

TwitterStream twitterStream = new TwitterStreamFactory().getInstance(); 

を変更する必要があり、Twitter4jは例を提供し、そのうちの一つがexactly what you are looking forですファイル。その後、このコードを取得します

import twitter4j.*; 
import twitter4j.conf.ConfigurationBuilder; 

public final class PrintSampleStream { 

    public static void main(String[] args) throws TwitterException { 
     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()); 
      } 

      @Override 
      public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) { 
       System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId()); 
      } 

      @Override 
      public void onTrackLimitationNotice(int numberOfLimitedStatuses) { 
       System.out.println("Got track limitation notice:" + numberOfLimitedStatuses); 
      } 

      @Override 
      public void onScrubGeo(long userId, long upToStatusId) { 
       System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId); 
      } 

      @Override 
      public void onStallWarning(StallWarning warning) { 
       System.out.println("Got stall warning:" + warning); 
      } 

      @Override 
      public void onException(Exception ex) { 
       ex.printStackTrace(); 
      } 
     }; 
     twitterStream.addListener(listener); 
     twitterStream.sample(); 
    } 
} 

これで、サンプルの公開ストリームの受信を開始します。特定のつぶやきを取得するには、いくつかのフィルタを使用する必要があります。あなたは、あなたが

FilterQuery filtre = new FilterQuery(); 
String[] keywordsArray = { "obama" }; 
filtre.track(keywordsArray); 
twitterStream.filter(filtre); 

をしたい単語で、このライン

twitterStream.sample(); 

を変更する必要があり、特定のクエリのツイートをしたい場合は、詳細プロファイルからのつぶやきをストリーミングする場合たとえば、あなたがする必要があります。フォローフィルターを使用してください。あなたは、配列のために、この

  long[] users = new long[]{someid,someotherid,otherid}; 
      twitterStream.addListener(listener); 
      FilterQuery filtre = new FilterQuery(); 
      filtre.follow(users); 
      twitterStream.filter(filtre); 

のidのためにそれを変更する必要がありますtwitterStream.sample();ラインはツイッターをユーザーごとに使用のidのです。あなたはTwitter4jでそれを得ることができ、特定のユーザーのIDがわからない場合:

User user = tw.showUser("barackobama"); //tw is your Twitter variable from twitter4j.Twitter tw=tf.getInstance(); 
long id = user.getId(); 

ストリームからのツイートを取得するより多くの方法がありますが、あなただけの本サイト上の文書や検索を読み取る必要があります。がんばろう!

+0

これは 'ConfigurationBuilder'とは何ですか?ここではエラーが発生しています。 'ConfigurationBuilderを解決できません' –

+0

上記のコメントの解決策が見つかりました。私はこれをインポートする必要があります。 'import twitter4j.conf。*;'まだあなたの答えを通って:) –

+0

うわー、私はその輸入を忘れて、ありがとう! – FeanDoe

1

Twitter HBC projectを試してみることをおすすめします。これは、イベントを消費するためにBlockingQueueを設定する方法の一番上の例です。

+0

私はあなたが提供したリンクを通過しました。 Eclipse IDEでこのプロジェクトを設定するにはどうすればよいですか? –

+0

私は興味深いものをいくつか見つけました。ありがとう@EmilForslund –

関連する問題