+++ /dev/null
-package com.yuji.tdb;\r
-\r
-import java.io.IOException;\r
-import java.util.ArrayList;\r
-import java.util.Calendar;\r
-import java.util.Date;\r
-import java.util.List;\r
-\r
-import javax.servlet.http.HttpServlet;\r
-import javax.servlet.http.HttpServletRequest;\r
-import javax.servlet.http.HttpServletResponse;\r
-\r
-import twitter4j.Query;\r
-import twitter4j.QueryResult;\r
-import twitter4j.Status;\r
-import twitter4j.Tweet;\r
-import twitter4j.Twitter;\r
-import twitter4j.TwitterException;\r
-import twitter4j.TwitterFactory;\r
-import twitter4j.auth.AccessToken;\r
-import twitter4j.auth.OAuthAuthorization;\r
-import twitter4j.auth.RequestToken;\r
-import twitter4j.conf.Configuration;\r
-import twitter4j.conf.ConfigurationBuilder;\r
-\r
-import com.yuji.tdb.common.CommonUtil;\r
-\r
-@SuppressWarnings("serial")\r
-public class TrainDelayBotServlet extends HttpServlet {\r
- private static RequestToken requestToken = null;\r
- private static AccessToken accessToken = null;\r
- private static String consumerKey = null;\r
- private static String consumerSecret = null;\r
-\r
- public void doGet(HttpServletRequest req, HttpServletResponse resp)\r
- throws IOException {\r
- resp.setContentType("text/plain");\r
- resp.getWriter().println(" traindelaybot Hello, world");\r
-\r
- String consumerKey = req.getParameter("key");\r
- String consumerSecret = req.getParameter("secret");\r
- String result = req.getParameter("result");\r
- if (!CommonUtil.isNull(consumerKey)\r
- && !CommonUtil.isNull(consumerSecret)) {\r
- setOAuthAuthorization(req, resp, consumerKey, consumerSecret);\r
- return;\r
- } else if (!CommonUtil.isNull(result)) {\r
- resultOAuthAuthorization();\r
- return;\r
- }\r
-\r
- main();\r
- }\r
-\r
- private void setOAuthAuthorization(HttpServletRequest req,\r
- HttpServletResponse resp, String consumerKey, String consumerSecret) {\r
- try {\r
- ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
-\r
- confBuilder.setDebugEnabled(true);\r
- confBuilder.setOAuthConsumerKey(consumerKey);\r
- confBuilder.setOAuthConsumerSecret(consumerSecret);\r
- Configuration conf = confBuilder.build();\r
-\r
- String url = req.getRequestURL().toString();\r
- \r
- OAuthAuthorization oauth = new OAuthAuthorization(conf);\r
- // Twitter\82Ì\94F\8fØ\89æ\96Ê\82©\82ç\82Ì\96ß\82è\90æ\82ð\8ew\92è\82µ\82Ü\82·\81B\r
- // AccessToken\83R\83\93\83g\83\8d\81[\83\89\82ð\8ew\92è\82µ\82Ü\82·\81B\r
- String callbackURL = url + "?result=yes";\r
- // RequestToken requestToken =\r
- // oauth.getOAuthRequestToken(callbackURL);\r
- requestToken = oauth.getOAuthRequestToken(callbackURL);\r
- // RequestToken\82ð\83Z\83b\83V\83\87\83\93\82É\95Û\91¶\82µ\82Ä\82¨\82«\82Ü\82·\81B\r
- // sessionScope("RequestToken", requestToken);\r
- // Twitter\82Ì\94F\8fØ\89æ\96Ê\82Ö\83\8a\83_\83C\83\8c\83N\83g\82µ\82Ü\82·\81B\r
-\r
- TrainDelayBotServlet.consumerKey = consumerKey;\r
- TrainDelayBotServlet.consumerSecret = consumerSecret;\r
-\r
- resp.sendRedirect(requestToken.getAuthenticationURL());\r
- } catch (TwitterException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (IOException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- }\r
-\r
- private void resultOAuthAuthorization() {\r
- try {\r
- // Twitter twitter = new TwitterFactory().getInstance();\r
- if (requestToken == null || CommonUtil.isNull(consumerKey)\r
- || CommonUtil.isNull(consumerSecret)) {\r
- return;\r
- }\r
- // String tokenKey = requestToken.getToken();\r
- // String tokenSecret = requestToken.getTokenSecret();\r
-\r
- ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
- confBuilder.setDebugEnabled(true).setOAuthConsumerKey(consumerKey)\r
- .setOAuthConsumerSecret(consumerSecret);\r
- TwitterFactory factory = new TwitterFactory(confBuilder.build());\r
- Twitter twitter = factory.getInstance();\r
-\r
- accessToken = twitter.getOAuthAccessToken(requestToken);\r
- } catch (TwitterException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- }\r
-\r
- private void main() {\r
-\r
- String text = "\8b\9e\95l\93\8c\96k";\r
-\r
- try {\r
- ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
- confBuilder.setDebugEnabled(true).setOAuthConsumerKey(consumerKey)\r
- .setOAuthConsumerSecret(consumerSecret);\r
- TwitterFactory factory = new TwitterFactory(confBuilder.build());\r
- Twitter twitter = factory.getInstance(accessToken);\r
-\r
- Calendar cal = Calendar.getInstance();\r
- Date date = cal.getTime();\r
- long cur = date.getTime();\r
- \r
- Query query = new Query();\r
- query.setRpp(100); // TODO\r
- query.setQuery(text);\r
- QueryResult result = twitter.search(query);\r
- List<Tweet> tweets = result.getTweets();\r
- int count = 0;\r
- String sample = "<none>";\r
- for (Tweet tweet : tweets) {\r
- Date at = tweet.getCreatedAt();\r
- long t = at.getTime();\r
- String message = tweet.getText();\r
- \r
- if (t < cur - 30 * 60 * 1000){\r
- continue;\r
- }\r
- if (!filter(message)) {\r
- // \92x\89\84\88È\8aO\82Ì\8f\91\82«\8d\9e\82Ý\r
- continue;\r
- }\r
- if (sample == null){\r
- sample = message;\r
- }\r
- System.out.println("@" + tweet.getFromUser() + " - "\r
- + tweet.getText() + at);\r
- }\r
- \r
- String message = "";\r
- if (count < 10){\r
- message = "\92x\89\84\82È\82µ " + date.toString(); \r
- }\r
- else {\r
- sample = CommonUtil.replaceString(sample, "@", "(a)");\r
- message = " " + date.toString(); \r
- }\r
- Status status = twitter.updateStatus(message);\r
- } catch (TwitterException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- }\r
- \r
- private List<String> keywords = null;\r
- \r
- private boolean filter(String text) {\r
- if (keywords == null) {\r
- keywords = new ArrayList<String>();\r
- keywords.add("\92x\89\84");\r
- keywords.add("\92x\82ê");\r
- keywords.add("\90U\82è\91Ö\82¦");\r
- }\r
-\r
- for (String keyword : keywords) {\r
- if (text.indexOf(keyword) >= 0) {\r
- return true;\r
- }\r
- }\r
- return false;\r
- } \r
-}\r