package com.yuji.tdb.twitter; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import twitter4j.Query; import twitter4j.QueryResult; import twitter4j.Status; import twitter4j.Tweet; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; import twitter4j.conf.ConfigurationBuilder; import com.yuji.tdb.common.CommonUtil; public class TwitterUtil { private static TwitterUtil instance = null; private static Object obj = new Object(); public static TwitterUtil getInstance() { if (instance == null) { synchronized (obj) { if (instance == null) { instance = new TwitterUtil(); } } } return instance; } private TwitterUtil() { } public void main(String consumerKey, String consumerSecret, AccessToken accessToken) { String text = "京浜東北"; try { ConfigurationBuilder confBuilder = new ConfigurationBuilder(); confBuilder.setDebugEnabled(true).setOAuthConsumerKey(consumerKey) .setOAuthConsumerSecret(consumerSecret); TwitterFactory factory = new TwitterFactory(confBuilder.build()); Twitter twitter = factory.getInstance(accessToken); Calendar cal = Calendar.getInstance(); Date date = cal.getTime(); long cur = date.getTime(); Query query = new Query(); query.setRpp(100); // TODO query.setQuery(text); QueryResult result = twitter.search(query); List tweets = result.getTweets(); int count = 0; String sample = ""; for (Tweet tweet : tweets) { Date at = tweet.getCreatedAt(); long t = at.getTime(); String message = tweet.getText(); if (t < cur - 30 * 60 * 1000){ continue; } if (!filter(message)) { // 遅延以外の書き込み continue; } if (sample == null){ sample = message; } System.out.println("@" + tweet.getFromUser() + " - " + tweet.getText() + at); } String message = ""; if (count < 1){ message = "遅延なし " + date.toString(); } else { sample = CommonUtil.replaceString(sample, "@", "(a)"); message = sample + " " + date.toString() + "count=" + count; } Status status = twitter.updateStatus(message); } catch (TwitterException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private List keywords = null; public boolean filter(String text) { if (keywords == null) { keywords = new ArrayList(); keywords.add("遅延"); keywords.add("遅れ"); keywords.add("振り替え"); keywords.add("停"); } for (String keyword : keywords) { if (text.indexOf(keyword) >= 0) { return true; } } return false; } }