@Test public void query() throws Exception { System.setProperty("twitter4j.debug", "true"); TwitterPublicDataSource ds = new TwitterPublicDataSource(); QueryResult result = ds.query("bosch tools", "en"); FileOutputStream fos = new FileOutputStream("/tmp/tweet.dat"); ObjectOutputStream out = new ObjectOutputStream(fos); out.writeObject(result); out.close(); display(result); List<Tweet> tweets = result.getTweets(); System.out.println("Number of tweet=" + tweets.size()); for (Tweet tweet : result.getTweets()) { System.out.println(tweet.getFromUser() + ":" + tweet.getText()); } }
/** * Usage: java twitter4j.examples.search.SearchTweets [query] * * @param args */ public static void main(String[] args) { Twitter twitter = new TwitterFactory().getInstance(); try { Query q = new Query("War"); q.setRpp(100); QueryResult result = twitter.search(q); List<Tweet> tweets = result.getTweets(); for (Tweet tweet : tweets) { System.out.println("@" + tweet.getFromUser() + " - " + tweet.getText()); } System.exit(0); } catch (TwitterException te) { te.printStackTrace(); System.out.println("Failed to search tweets: " + te.getMessage()); System.exit(-1); } }
/** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Get the query and resultLimit parameters we are going to use for fetching the tweets. Object queryObj = "google"; Object resultsLimit = "3"; // if(queryObj == null) { // return; // } int limit = 5; if (resultsLimit != null) { try { limit = Integer.parseInt((String) resultsLimit); } catch (NumberFormatException e) { // no need for action } } String query = (String) queryObj; Twitter twitter = new TwitterFactory().getInstance(); try { // Search for the result tweets using the parameter query. Query queryTweet = new Query(query); QueryResult searchResult = twitter.search(queryTweet); List<Tweet> tweets = searchResult.getTweets(); if (tweets.size() >= limit) { tweets = tweets.subList(0, limit); } Long lastTweetId = null; try { lastTweetId = Long.parseLong((String) request.getParameter("lastTweetId")); } catch (NumberFormatException e) { lastTweetId = 0L; } // Iterate over the tweets and extract the information from each of them. List<TwitterHolder> tweetTexts = new ArrayList<TwitterHolder>(); for (Tweet tweet : tweets) { if (lastTweetId > 0 && tweet.getId() <= lastTweetId.longValue()) { continue; } String text = tweet.getText(); // Find URLs in the tweet text and replace them with a html link to the founded URL. Matcher matcher = pattern.matcher(text); while (matcher.find()) { String group = matcher.group(); StringBuilder replacedUrl = new StringBuilder("<a href=\"") .append(group) .append("\">") .append(group) .append("</a>"); text = text.replaceAll(Pattern.quote(group), replacedUrl.toString()); } Date publishedDate = tweet.getCreatedAt(); StringBuffer authorLink = new StringBuffer("http://twitter.com/#!/").append(tweet.getFromUser()); /* Create TweetHolder instance and add it to the result list of TweetHolder instances. * That's what is going to the template for rendering. */ tweetTexts.add( new TwitterHolder( text, tweet.getFromUser(), authorLink.toString(), new PrettyTime(new Locale("en")).format(publishedDate), tweet.getProfileImageUrl(), tweet.getSource(), String.valueOf(tweet.getId()))); } Collections.reverse(tweetTexts); String json = new Gson().toJson(tweetTexts); // Add the result collection of TweetHolder instances to the response. response.setCharacterEncoding("UTF-8"); response.setContentType("application/json"); response.getWriter().append(json); } catch (TwitterException e) { response.setCharacterEncoding("UTF-8"); response.setContentType("application/json"); response.getWriter().append("[]"); e.printStackTrace(); // return true; return; } // return true; }
public static int searchForTwits(int id, String text, Connection conn, String getDate) throws TwitterException, SQLException, LangDetectException, ParseException { Twitter twitter = new TwitterFactory().getInstance(); int countTweets = 0; int pageNumber = 1; int n = 0; do { Query query = new Query(text).rpp(100).page(pageNumber); QueryResult result = twitter.search(query); for (Tweet tweet : result.getTweets()) { java.util.Date date = tweet.getCreatedAt(); Format formatter; formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String newDate = formatter.format(date); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date oldDate = df.parse(getDate); Statement input = conn.createStatement(); countTweets++; if (date.after(oldDate)) { Detector detector = DetectorFactory.create(); detector.append(tweet.getText()); String lang; try { lang = detector.detect(); if (lang.equals("lv") || lang.equals("ru")) { try { input.executeUpdate( "INSERT INTO tweet " + "VALUES (null, '" + tweet.getId() + "', '" + tweet.getFromUser() + "', '" + tweet.getText().replace("'", "’") + "', '" + newDate + "', null, null, null)"); input.executeUpdate( "INSERT INTO tweet_brand " + "VALUES (null, '" + tweet.getId() + "', '" + id + "')"); } catch (SQLException ex) { } n++; } else continue; } catch (LangDetectException ex) { } } else continue; } pageNumber++; if (countTweets == 100) countTweets = 0; else break; } while (pageNumber != 16); System.out.print(text + " "); return n; }