Twitter4j手習い


#まずはアクセストークンの取得
アクセストークンの取得法などについては、phpだけど↓↓のサイトが、準備の流れやOAuthの仕組みがわかりやすい
[Twitter APIの使い方まとめ](https://syncer.jp/twitter-api-matome)
[OAuth1.0の署名(Signature)を作成する方法](https://syncer.jp/how-to-make-signature-of-oauth-1)

#とりあえず呟いてみる
まんま[ここ](http://blog.unfindable.net/archives/5011)を見て書いた

```java:KinokoTwitterClient.java
package jp.kinokodata;

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


/**
 * Created by superkinoko on 2016/11/19.
 */

public class KinokoTwitterClient {
    private Twitter twitter;

    public static void main(String[] args) {
        KinokoTwitterClient tweet = new KinokoTwitterClient();
        tweet.doHogehoge();
    }
    
    private void doHogehoge() {
        getTwitter();
        twitter.updateStatus("てすと");
    }
    
    private void getTwitter() {
        if(twitter == null) {
            ConfigurationBuilder cb = new ConfigurationBuilder();
            cb.setDebugEnabled(true)
                    .setOAuthConsumerKey("yourConsumerKey")
                    .setOAuthConsumerSecret("yourConsumerSecret")
                    .setOAuthAccessToken("yourhAccessToken")
                    .setOAuthAccessTokenSecret("yourAccessTokenSecret");
            TwitterFactory tf = new TwitterFactory(cb.build());
            twitter = tf.getInstance();
        }
    }

}
```

#ツイートの検索をしてみる

QueryにTwitterの検索クエリを入れてあげると、ツイートが検索できる。


```java:KinokoTwitterClient.java
    private void doHogehoge() {
        getTwitter();

        Query query = new Query();
        query.setQuery("from:hyperkinoko");
        // 検索件数。setRppはなくなったもよう
        query.setCount(100);

        QueryResult result = null;
        try {
            result = twitter.search(query);
        } catch (TwitterException e) {
            e.printStackTrace();
        }
        Iterator itr = result.getTweets().iterator();
        while (itr.hasNext()) {
            Status status = (Status)itr.next();
            System.out.println(status.getText() + "リツイート: " + status.getRetweetCount());
        }
    }
```


#Streamを取得してみる

Listenerをaddして、Status(ツイート)を取得すると反応するようになった
動きのある画面はまさにTwitterのTLっぽい
sampleというのはアレだ、化粧品のサンプルとかそういう意味じゃなくて、標本抽出の意味だね
[ここ](http://t-horikiri.hatenablog.jp/entry/20120309/1331263948)を参考にして、filterをかけてみた


```java:KinokoTwitterClient.java
    private void doHogehoge() {
        getTwitterStream();
        twitterStream.addListener(new MyTweetListener());
        FilterQuery filterQuery = new FilterQuery();
        filterQuery.track(new String[] {"#IPPONGP"});
        twitterStream.filter(filterQuery);
//        twitterStream.sample("ja");
    }

    private void getTwitterStream() {
        if(twitterStream == null) {
            ConfigurationBuilder cb = new ConfigurationBuilder();
            cb.setDebugEnabled(true)
                    .setOAuthConsumerKey("yourConsumerKey")
                    .setOAuthConsumerSecret("yourConsumerSecret")
                    .setOAuthAccessToken("yourhAccessToken")
                    .setOAuthAccessTokenSecret("yourAccessTokenSecret");
            TwitterStreamFactory tf = new TwitterStreamFactory(cb.build());
            twitterStream = tf.getInstance();
        }
    }

    class MyTweetListener extends StatusAdapter {
        @Override
        public void onStatus(Status status) {
            System.out.println(status.getText());
        }
    }
```