OSDN Git Service

init bot
[traindelaybot/source.git] / workspace / .metadata / .plugins / org.eclipse.core.resources / .history / f2 / e0c3d16004650011187edd98d8496234
1 package com.yuji.tdb;\r
2 \r
3 import java.io.IOException;\r
4 import java.util.ArrayList;\r
5 import java.util.Calendar;\r
6 import java.util.Date;\r
7 import java.util.List;\r
8 \r
9 import javax.servlet.http.HttpServlet;\r
10 import javax.servlet.http.HttpServletRequest;\r
11 import javax.servlet.http.HttpServletResponse;\r
12 \r
13 import twitter4j.Query;\r
14 import twitter4j.QueryResult;\r
15 import twitter4j.Status;\r
16 import twitter4j.Tweet;\r
17 import twitter4j.Twitter;\r
18 import twitter4j.TwitterException;\r
19 import twitter4j.TwitterFactory;\r
20 import twitter4j.auth.AccessToken;\r
21 import twitter4j.auth.OAuthAuthorization;\r
22 import twitter4j.auth.RequestToken;\r
23 import twitter4j.conf.Configuration;\r
24 import twitter4j.conf.ConfigurationBuilder;\r
25 \r
26 import com.yuji.tdb.common.CommonUtil;\r
27 \r
28 @SuppressWarnings("serial")\r
29 public class TrainDelayBotServlet extends HttpServlet {\r
30         private static RequestToken requestToken = null;\r
31         private static AccessToken accessToken = null;\r
32         private static String consumerKey = null;\r
33         private static String consumerSecret = null;\r
34 \r
35         public void doGet(HttpServletRequest req, HttpServletResponse resp)\r
36                         throws IOException {\r
37                 resp.setContentType("text/plain");\r
38                 resp.getWriter().println(" traindelaybot Hello, world");\r
39 \r
40                 String consumerKey = req.getParameter("key");\r
41                 String consumerSecret = req.getParameter("secret");\r
42                 String result = req.getParameter("result");\r
43                 if (!CommonUtil.isNull(consumerKey)\r
44                                 && !CommonUtil.isNull(consumerSecret)) {\r
45                         setOAuthAuthorization(req, resp, consumerKey, consumerSecret);\r
46                         return;\r
47                 } else if (!CommonUtil.isNull(result)) {\r
48                         resultOAuthAuthorization();\r
49                         return;\r
50                 }\r
51 \r
52                 main();\r
53         }\r
54 \r
55         private void setOAuthAuthorization(HttpServletRequest req,\r
56                         HttpServletResponse resp, String consumerKey, String consumerSecret) {\r
57                 try {\r
58                         ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
59 \r
60                         confBuilder.setDebugEnabled(true);\r
61                         confBuilder.setOAuthConsumerKey(consumerKey);\r
62                         confBuilder.setOAuthConsumerSecret(consumerSecret);\r
63                         Configuration conf = confBuilder.build();\r
64 \r
65                         String url = req.getRequestURL().toString();\r
66                         \r
67                         OAuthAuthorization oauth = new OAuthAuthorization(conf);\r
68                         // Twitter\82Ì\94F\8fØ\89æ\96Ê\82©\82ç\82Ì\96ß\82è\90æ\82ð\8ew\92è\82µ\82Ü\82·\81B\r
69                         // AccessToken\83R\83\93\83g\83\8d\81[\83\89\82ð\8ew\92è\82µ\82Ü\82·\81B\r
70                         String callbackURL = url + "?result=yes";\r
71                         // RequestToken requestToken =\r
72                         // oauth.getOAuthRequestToken(callbackURL);\r
73                         requestToken = oauth.getOAuthRequestToken(callbackURL);\r
74                         // RequestToken\82ð\83Z\83b\83V\83\87\83\93\82É\95Û\91\82µ\82Ä\82¨\82«\82Ü\82·\81B\r
75                         // sessionScope("RequestToken", requestToken);\r
76                         // Twitter\82Ì\94F\8fØ\89æ\96Ê\82Ö\83\8a\83_\83C\83\8c\83N\83g\82µ\82Ü\82·\81B\r
77 \r
78                         TrainDelayBotServlet.consumerKey = consumerKey;\r
79                         TrainDelayBotServlet.consumerSecret = consumerSecret;\r
80 \r
81                         resp.sendRedirect(requestToken.getAuthenticationURL());\r
82                 } catch (TwitterException e) {\r
83                         // TODO Auto-generated catch block\r
84                         e.printStackTrace();\r
85                 } catch (IOException e) {\r
86                         // TODO Auto-generated catch block\r
87                         e.printStackTrace();\r
88                 }\r
89         }\r
90 \r
91         private void resultOAuthAuthorization() {\r
92                 try {\r
93                         // Twitter twitter = new TwitterFactory().getInstance();\r
94                         if (requestToken == null || CommonUtil.isNull(consumerKey)\r
95                                         || CommonUtil.isNull(consumerSecret)) {\r
96                                 return;\r
97                         }\r
98                         // String tokenKey = requestToken.getToken();\r
99                         // String tokenSecret = requestToken.getTokenSecret();\r
100 \r
101                         ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
102                         confBuilder.setDebugEnabled(true).setOAuthConsumerKey(consumerKey)\r
103                                         .setOAuthConsumerSecret(consumerSecret);\r
104                         TwitterFactory factory = new TwitterFactory(confBuilder.build());\r
105                         Twitter twitter = factory.getInstance();\r
106 \r
107                         accessToken = twitter.getOAuthAccessToken(requestToken);\r
108                 } catch (TwitterException e) {\r
109                         // TODO Auto-generated catch block\r
110                         e.printStackTrace();\r
111                 }\r
112         }\r
113 \r
114         private void main() {\r
115 \r
116                 String text = "\8b\9e\95l\93\8c\96k";\r
117 \r
118                 try {\r
119                         ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
120                         confBuilder.setDebugEnabled(true).setOAuthConsumerKey(consumerKey)\r
121                                         .setOAuthConsumerSecret(consumerSecret);\r
122                         TwitterFactory factory = new TwitterFactory(confBuilder.build());\r
123                         Twitter twitter = factory.getInstance(accessToken);\r
124 \r
125                         Calendar cal = Calendar.getInstance();\r
126                         Date date = cal.getTime();\r
127                         long cur = date.getTime();\r
128                         \r
129                         Query query = new Query();\r
130                         query.setRpp(100); // TODO\r
131                         query.setQuery(text);\r
132                         QueryResult result = twitter.search(query);\r
133                         List<Tweet> tweets = result.getTweets();\r
134                         int count = 0;\r
135                         String sample = null;\r
136                         for (Tweet tweet : tweets) {\r
137                                 Date at = tweet.getCreatedAt();\r
138                                 long t = at.getTime();\r
139                                 String message = tweet.getText();\r
140                                 \r
141                                 if (t < cur - 30 * 60 * 1000){\r
142                                         continue;\r
143                                 }\r
144                                 if (!filter(message)) {\r
145                                         // \92x\89\84\88È\8aO\82Ì\8f\91\82«\8d\9e\82Ý\r
146                                         continue;\r
147                                 }\r
148                                 if (sample == null){\r
149                                         sample = message;\r
150                                 }\r
151                                 System.out.println("@" + tweet.getFromUser() + " - "\r
152                                                 + tweet.getText() + at);\r
153                         }\r
154                 \r
155                         String message = "";\r
156                         if (count < 10){\r
157                                 message = "\92x\89\84\82È\82µ " + date.toString();                        \r
158                         }\r
159                         else {\r
160                                 \r
161                         }\r
162                         Status status = twitter.updateStatus(message);\r
163                 } catch (TwitterException e) {\r
164                         // TODO Auto-generated catch block\r
165                         e.printStackTrace();\r
166                 }\r
167         }\r
168         \r
169         private List<String> keywords = null;\r
170         \r
171         private boolean filter(String text) {\r
172                 if (keywords == null) {\r
173                         keywords = new ArrayList<String>();\r
174                         keywords.add("\92x\89\84");\r
175                         keywords.add("\92x\82ê");\r
176                         keywords.add("\90U\82è\91Ö\82¦");\r
177                 }\r
178 \r
179                 for (String keyword : keywords) {\r
180                         if (text.indexOf(keyword) >= 0) {\r
181                                 return true;\r
182                         }\r
183                 }\r
184                 return false;\r
185         }       \r
186 }\r