OSDN Git Service

aaa
[traindelaybot/source.git] / workspace / .metadata / .plugins / org.eclipse.core.resources / .history / 87 / 50202ce0666b001115b7b82f2f4ce01a
1 package com.yuji.tdb.twitter;\r
2 \r
3 import java.text.DateFormat;\r
4 import java.text.SimpleDateFormat;\r
5 import java.util.ArrayList;\r
6 import java.util.Calendar;\r
7 import java.util.Date;\r
8 import java.util.List;\r
9 import java.util.TimeZone;\r
10 import java.util.logging.Logger;\r
11 \r
12 import twitter4j.Query;\r
13 import twitter4j.QueryResult;\r
14 import twitter4j.Status;\r
15 import twitter4j.Tweet;\r
16 import twitter4j.Twitter;\r
17 import twitter4j.TwitterException;\r
18 import twitter4j.TwitterFactory;\r
19 import twitter4j.auth.AccessToken;\r
20 import twitter4j.conf.ConfigurationBuilder;\r
21 \r
22 import com.yuji.tdb.common.CommonUtil;\r
23 import com.yuji.tdb.db.TrainDao;\r
24 import com.yuji.tdb.utility.StringUtility;\r
25 \r
26 public class TwitterUtil {\r
27         private static final Logger log = Logger\r
28                         .getLogger(TwitterUtil.class.getName());\r
29         private static TwitterUtil instance = null;\r
30         private static Object obj = new Object();\r
31         private DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");\r
32 \r
33         public static TwitterUtil getInstance() {\r
34                 if (instance == null) {\r
35                         synchronized (obj) {\r
36                                 if (instance == null) {\r
37                                         instance = new TwitterUtil();\r
38                                 }\r
39                         }\r
40                 }\r
41                 return instance;\r
42         }\r
43 \r
44         private TwitterUtil() {\r
45                 //TimeZone.setDefault(TimeZone.getTimeZone("JST")); // TODO \8fê\8f\8a\r
46         }\r
47 \r
48         public void main(String consumerKey, String consumerSecret, AccessToken accessToken) {\r
49 \r
50                 String text = "\8b\9e\95l\93\8c\96k";\r
51 \r
52                 try {\r
53                         ConfigurationBuilder confBuilder = new ConfigurationBuilder();\r
54                         confBuilder.setDebugEnabled(true).setOAuthConsumerKey(consumerKey)\r
55                                         .setOAuthConsumerSecret(consumerSecret);\r
56                         TwitterFactory factory = new TwitterFactory(confBuilder.build());\r
57                         Twitter twitter = factory.getInstance(accessToken);\r
58 \r
59                         twite(text, twitter);\r
60                 } catch (TwitterException e) {\r
61                         // TODO Auto-generated catch block\r
62                         e.printStackTrace();\r
63                         log.severe(e.toString());\r
64                 }\r
65         }\r
66 \r
67         private void twite(String text, Twitter twitter) throws TwitterException {\r
68                 Calendar cal = Calendar.getInstance();\r
69                 Date date = cal.getTime();\r
70                 long cur = date.getTime();\r
71                 \r
72                 Query query = new Query();\r
73                 //query.setRpp(1000); // TODO\r
74                 query.setQuery(text);\r
75                 QueryResult result = twitter.search(query);\r
76                 List<Tweet> tweets = result.getTweets();\r
77                 \r
78                 int count = 0;\r
79                 int hit = 0;\r
80                 int mhit = 0;\r
81                 \r
82                 int index;\r
83                 int mindex = 0;\r
84                 int size = tweets.size();\r
85                 for (index = 0; index < size; index++) {\r
86                         Tweet tweet = tweets.get(index);\r
87                         \r
88                         Date at = tweet.getCreatedAt();\r
89                         long t = at.getTime();\r
90                         \r
91                         String message = tweet.getText();\r
92                         \r
93                         if (t < cur - 30 * 60 * 1000){\r
94                                 System.out.println("\81~" + tweet.getFromUser() + " - "\r
95                                                 + tweet.getText() + at);\r
96                                 continue;\r
97                         }\r
98                         hit = filter(message);\r
99                         if (hit <= 0) {\r
100                                 // \92x\89\84\88È\8aO\82Ì\8f\91\82«\8d\9e\82Ý\r
101                                 continue;\r
102                         }\r
103                         if (hit > mhit){\r
104                                 hit = mhit;\r
105                                 mindex = index;\r
106                         }\r
107 \r
108                         System.out.println("@" + tweet.getFromUser() + " - "\r
109                                         + tweet.getText() + at);\r
110                         count++;\r
111                 }\r
112 \r
113                 String message = "";\r
114                 if (count < 5){\r
115                         message = "\92x\89\84\82È\82µ " + df.format(date);        \r
116                 }\r
117                 else {\r
118                         int N = 100;\r
119                         \r
120                         String sample = tweets.get(mindex).getText();\r
121                         sample = CommonUtil.replaceString(sample, "@", "(a)");\r
122                         sample = StringUtility.parseSubstring(sample, N);\r
123                         message = sample + " " + df.format(date) + " count=" + count;                                                   \r
124                 }\r
125                 System.out.println(message); //TODO\r
126                 Status status = twitter.updateStatus(message); //TODO\r
127         }\r
128         \r
129         private List<Train> getTrainList(){\r
130                 TrainDao dao = TrainDao.getInstance();\r
131                 list = dao.search();\r
132         }\r
133         \r
134         private static List<String> keywords = null;\r
135 \r
136         public int filter(String text) {\r
137                 if (keywords == null) {\r
138                         keywords = new ArrayList<String>();\r
139                         keywords.add("\92x\89\84");\r
140                         keywords.add("\92x\82ê");\r
141                         keywords.add("\90U\82è\91Ö\82¦");\r
142                         keywords.add("\90U\91Ö");\r
143                         keywords.add("\92â\8e~");\r
144                         keywords.add("\8e\96\8cÌ");\r
145                 }\r
146 \r
147                 int count = 0;\r
148                 for (String keyword : keywords) {\r
149                         if (text.indexOf(keyword) >= 0) {\r
150                                 count++;\r
151                         }\r
152                 }\r
153                 return count;\r
154         }\r
155 }\r