Esempio n. 1
0
  private void pullTweets(Key key, Twitter twitter) {
    try {
      RateLimitStatus rateLimitStatus = twitter.getRateLimitStatus();
      if (rateLimitStatus.getRemainingHits() == 0) return;

      double currentRate =
          (rateLimitStatus.getHourlyLimit() - rateLimitStatus.getRemainingHits())
              / (3601 - rateLimitStatus.getSecondsUntilReset());
      logger.info(
          "Current twitter refresh rate: {}/h, official refresh rate: {}",
          String.format("%1.1f", currentRate),
          rateLimitStatus.getHourlyLimit());
      if (currentRate > rateLimitStatus.getHourlyLimit()) {
        logger.info("Skipped refreshing Twitter feeds to limit the refresh rate");
        return;
      }

      ResponseList<Status> newFriendsTimeline = twitter.getHomeTimeline();
      ResponseList<Status> newMentions = twitter.getMentions();
      synchronized (this) {
        mergeStatuses(timeline.get(key), newFriendsTimeline);
        mergeStatuses(mentions.get(key), newMentions);
      }
    } catch (TwitterException e) {
      logger.warn("Twitter reported an error: " + e.getMessage(), e);
    }
  }
Esempio n. 2
0
  @Override
  public List<Tweet> getMentions() {

    /*
     * to avoid duplicates (we have to search and get mentions,
     * because mentions by themselves are broken  / sometimes
     * don't update on a timely basis.
     */

    Set<Tweet> result = new TreeSet<Tweet>();
    // FIXME or 200 mentions = DOS
    try {
      List<Status> mentions = twitter.getMentions();

      for (Status s : mentions) {
        Tweet t = new Tweet(s.getId(), s.getText(), s.getUser().getScreenName());
        t.setInReplyToId(s.getInReplyToStatusId());
        result.add(t);
      }
      // mentions should be fixed now?
      //            Query q = new Query("@"+screenName);
      //
      //            QueryResult r = twitter.search(q);
      //
      //			for(twitter4j.Tweet t : r.getTweets()) {
      //				//compute hashcodes like in mockimpl
      //			    Tweet tt = new Tweet(t.getId(), t.getText(), t.getFromUser());
      //			    if(t.get){
      //			        tt.setInReplyToId(t.getInReplyToStatusId()))
      //			    }
      //			    t.
      //				result.add(tt);
      //			}

    } catch (TwitterException e) {
      throw new ScriptusRuntimeException(e);
    }

    return new ArrayList<Tweet>(result);
  }
Esempio n. 3
0
 public ResponseList<Status> getMentions(Paging paging) throws TwitterException {
   return twitter.getMentions(paging);
 }