@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());
    }
  }
Пример #2
0
  /**
   * 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;
  }
Пример #4
0
  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("'", "&rsquo;")
                        + "', '"
                        + 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;
  }