Help us understand the problem. What is going on with this article?

Twitter4j手習い

More than 3 years have passed since last update.

まずはアクセストークンの取得

アクセストークンの取得法などについては、phpだけど↓↓のサイトが、準備の流れやOAuthの仕組みがわかりやすい
Twitter APIの使い方まとめ
OAuth1.0の署名(Signature)を作成する方法

とりあえず呟いてみる

まんまここを見て書いた

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の検索クエリを入れてあげると、ツイートが検索できる。

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というのはアレだ、化粧品のサンプルとかそういう意味じゃなくて、標本抽出の意味だね
ここを参考にして、filterをかけてみた

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());
        }
    }
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away