public static void main(String[] args) throws TwitterException, IOException {
   Twitter twitter = TwitterFactory.getSingleton();
   JLanguageTool langTool = new JLanguageTool(new AmericanEnglish());
   List<String> twts = new ArrayList<String>();
   for (String arg : args) {
     Query query = new Query(arg);
     QueryResult result;
     int counter = 0;
     do {
       result = twitter.search(query);
       List<Status> tweets = result.getTweets();
       for (Status tweet : tweets) {
         if (isEligible(tweet)) {
           System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText());
           System.out.println(tweet.getLang());
           twts.add(tweet.getText());
           counter++;
         }
       }
     } while ((query = result.nextQuery()) != null && counter < 5);
   }
   for (String str : twts) {
     List<RuleMatch> matches = langTool.check(str);
     for (RuleMatch match : matches) {
       System.out.println(
           "Potential error at line "
               + match.getLine()
               + ", column "
               + match.getColumn()
               + ": "
               + match.getMessage());
       System.out.println("Suggested correction: " + match.getSuggestedReplacements());
     }
   }
 }
 /** {@inheritDoc} */
 @Override
 public void onUnload() {
   unloading = true;
   for (final Twitter parser : new ArrayList<Twitter>(Twitter.PARSERS)) {
     parser.disconnect("");
   }
 }
  public boolean getMentions(Twitter twitter) {
    boolean newActivity = false;

    try {
      if (lastRefresh != 0l) {
        Paging paging = new Paging(1, 50, lastRefresh);
        List<Status> mentions = twitter.getMentionsTimeline(paging);

        if (mentions.size() > 0) {
          insertMentions(mentions);
          commitLastRefresh(mentions.get(0).getId());
          newActivity = true;
        }
      } else {
        Paging paging = new Paging(1, 1);
        List<Status> lastMention = twitter.getMentionsTimeline(paging);

        if (lastMention.size() > 0) {
          commitLastRefresh(lastMention.get(0).getId());
        }
      }
    } catch (TwitterException e) {
      e.printStackTrace();
    }

    return newActivity;
  }
  @Override
  public void nextTuple() {
    // emit tweets
    Status status = statuses.poll();
    if (status == null) Utils.sleep(1000);
    else {
      ResponseList<User> followers;
      ResponseList<User> friends;

      try {
        Thread.sleep(6000);
        followers = twitter.getFollowersList(status.getUser().getScreenName(), -1);
        Thread.sleep(6000);
        friends = twitter.getFriendsList(status.getUser().getScreenName(), -1);

        if (!followers.isEmpty() && !friends.isEmpty()) {
          spoutOutputCollector.emit(new Values(status, followers, friends));
        }
        // followers.clear();
        // friends.clear();
      } catch (TwitterException ex) {
        ex.printStackTrace();

      } catch (InterruptedException ex) {
        ex.printStackTrace();
      }
    }
  }
Beispiel #5
0
 @Test
 public void testProtectedAccounts() {
   Twitter tw = TwitterTest.newTestTwitter();
   try {
     tw.show("acwright");
   } catch (SuspendedUser e) {
     assert false;
   } catch (E403 e) {
   }
   try {
     tw.isFollowing("acwright");
   } catch (SuspendedUser e) {
     assert false;
   } catch (E403 e) {
   }
   try {
     tw.isFollower("acwright", "stephenfry");
   } catch (SuspendedUser e) {
     assert false;
   } catch (E403 e) {
   }
   try {
     tw.getUserTimeline("acwright");
   } catch (SuspendedUser e) {
     assert false;
   } catch (E403 e) {
   } catch (E401 e) {
   }
 }
Beispiel #6
0
 @Test
 public void testShowBulk() {
   { // a small bulk!
     Twitter tw = TwitterTest.newTestTwitter();
     List<User> users = tw.users().show(Arrays.asList("mcfc", "winterstein"));
     for (User user : users) {
       System.out.println(
           user.getScreenName()
               + "\t"
               + user.getLocation()
               + "\t"
               + user.getPlace()
               + "\t"
               + user.getId());
     }
   }
   { // anonymous -- only in version 1
     Twitter tw = new Twitter();
     tw.setAPIRootUrl("http://api.twitter.com/1");
     List<User> users = tw.users().show(Arrays.asList("joehalliwell", "winterstein"));
     for (User user : users) {
       System.out.println(
           user.getScreenName()
               + "\t"
               + user.getLocation()
               + "\t"
               + user.getPlace()
               + "\t"
               + user.getId());
     }
   }
 }
Beispiel #7
0
 @Test
 public void testBulkShowById() {
   Twitter tw = TwitterTest.newTestTwitter();
   List<Long> userIds = Arrays.asList(32L, 34L, 45L, 12435562L);
   List<User> users = tw.bulkShowById(userIds);
   assert users.size() == 2 : users;
 }
  @Test
  public void testLinkTruncation() throws Exception {
    Twitter tt = TwitterTest.newTestTwitter();
    Status s = tt.getStatus(new BigInteger("154915377170747392"));
    List<TweetEntity> urls = s.getTweetEntities(KEntityType.urls);
    System.out.println(urls);
    System.out.println(s);
    assert !s.getText().contains("http://t.co ...");
    //				"RT @pozorvlak: Delighted to see Alan Bundy (@winterstein's PhD supervisor, IIRC) in the
    // New Year's Honour's list: http://soda.sh/xbE");

    BigInteger id = new BigInteger("154915015965683712");
    tt.setIncludeTweetEntities(true);
    Status s2 = tt.getStatus(id);
    System.out.println(s2);
    System.out.println(s2.getDisplayText());
    List<TweetEntity> urls2 = s2.getTweetEntities(KEntityType.urls);
    TweetEntity te = urls2 == null ? null : urls2.get(0); // this tweet-entity sucks too :(
    System.out.println(urls2);
    assert !s2.getText().contains("http://t.co ...");

    List<Status> joes = tt.getUserTimeline("joehalliwell");
    for (Status status : joes) {
      System.out.println(status);
    }
  }
Beispiel #9
0
  @Test
  public void testBlocks() {
    {
      //			OAuthSignpostClient client = new OAuthSignpostClient(
      //			OAuthSignpostClient.JTWITTER_OAUTH_KEY,
      //			OAuthSignpostClient.JTWITTER_OAUTH_SECRET,"oob");
      //	client.authorizeDesktop();
      //	String pin = client.askUser("The Pin?");
      //	System.out.println(pin);
      //	client.setAuthorizationCode(pin);
      //	String[] tokens = client.getAccessToken();
      //	System.out.println(tokens[0]+" "+tokens[1]);

      //			OAuthSignpostClient client = new OAuthSignpostClient(
      //			OAuthSignpostClient.JTWITTER_OAUTH_KEY,
      //			OAuthSignpostClient.JTWITTER_OAUTH_SECRET,
      //			token0, token1);
      //			Twitter jtwit = new Twitter(null, client);
      //			System.out.println(jtwit.getSelf());
      Twitter jtwit = TwitterTest.newTestTwitter();
      Twitter_Users ta = jtwit.users();
      List<Number> blocked = ta.getBlockedIds();
      System.out.println(blocked);
      List<User> users = ta.showById(blocked);
      System.out.println(users);
    }
  }
Beispiel #10
0
 /** Test method for {@link winterwell.jtwitter.Twitter#getFollowers()}. */
 @Test
 public void testGetFollowers() {
   Twitter tw = TwitterTest.newTestTwitter();
   List<User> f = tw.users().getFollowers();
   assert f.size() > 0;
   assert Twitter.getUser("winterstein", f) != null;
 }
Beispiel #11
0
  @Test
  public void testGetRelationshipInfo() {
    Twitter jtwit = TwitterTest.newTestTwitter();
    Twitter_Users tu = new Twitter_Users(jtwit);
    List<User> users =
        tu.getRelationshipInfo(
            Arrays.asList("winterstein", "spoonmcguffin", "stephenfry", "jtwittest2"));
    User w = users.get(users.indexOf(new User("winterstein")));
    assert w.isFollowingYou();
    User jtwit2 = users.get(users.indexOf(new User("jtwittest2")));
    User fry = users.get(users.indexOf(new User("stephenfry")));

    boolean jtwitFollowsWinterstein = jtwit.isFollowing("winterstein");
    boolean jtwitFollowsFry = jtwit.isFollowing("stephenfry");
    if (!jtwitFollowsFry) {
      jtwit.follow("stephenfry");
    }
    User fryb = jtwit.users().show("stephenfry");

    //		boolean isf = jtwit.users().isFollower("winterstein", jtwit.getScreenName());
    //		assert isf;
    //		User w2 = jtwit.users().show("winterstein");
    //		assert w2.isFollowingYou(); comes back null?!

    assert fry.isFollowedByYou();
    assert fryb.isFollowedByYou();
    assert !fry.isFollowingYou();
    // this now returns null a lot!
    assert fryb.isFollowingYou() == null || !fryb.isFollowingYou();
  }
 private void initTwitter() {
   mTwitter = TwitterFactory.getSingleton();
   mTwitter.setOAuthConsumer(
       Configuration.INSTANCE.consumerToken, Configuration.INSTANCE.consumerSecret);
   mTwitter.setOAuthAccessToken(
       new AccessToken(Configuration.INSTANCE.accessToken, Configuration.INSTANCE.accessSecret));
 }
  public static void printTweets(
      String keywords, String location, Integer limit, Boolean hideRetweets)
      throws TwitterException, URLs.ConnectionException, GeolocationSearch.SearchLocationException,
          MalformedURLException, GeolocationSearch.NoKeyException, URLs.HTTPQueryException {
    Twitter twitter = new TwitterFactory().getInstance();
    Query query = new Query(keywords);
    query.setGeoCode(getLocation(location), RADIUS, Query.KILOMETERS);
    Integer needTweets;
    Integer numberTweets = 0;
    if (limit == Integer.MAX_VALUE) {
      needTweets = NUMBER_TWEETS;
    } else {
      needTweets = limit;
    }
    QueryResult result;
    List<Status> tweets;

    do {
      result = twitter.search(query);
      tweets = result.getTweets();
      for (Status tweet : tweets) {
        if (!(hideRetweets && tweet.isRetweet()) && (numberTweets < needTweets)) {
          printTweet(tweet, false);
          numberTweets++;
        }
      }
      query = result.nextQuery();
    } while ((numberTweets < needTweets) && (query != null));

    if (numberTweets == 0) {
      System.out.println("Твитов по заданному запросу не найдено.");
    } else {
      System.out.println(SEPARATOR);
    }
  }
  public boolean getFollowers(Twitter twitter) {
    boolean newActivity = false;

    try {
      List<User> followers =
          twitter.getFollowersList(
              useSecondAccount
                  ? AppSettings.getInstance(context).secondScreenName
                  : AppSettings.getInstance(context).myScreenName,
              -1,
              200);
      User me = twitter.verifyCredentials();

      int oldFollowerCount = sharedPrefs.getInt("activity_follower_count_" + currentAccount, 0);
      Set<String> latestFollowers =
          sharedPrefs.getStringSet(
              "activity_latest_followers_" + currentAccount, new HashSet<String>());

      Log.v(TAG, "followers set size: " + latestFollowers.size());
      Log.v(TAG, "old follower count: " + oldFollowerCount);
      Log.v(TAG, "current follower count: " + me.getFollowersCount());

      List<User> newFollowers = new ArrayList<User>();
      if (latestFollowers.size() != 0) {
        for (int i = 0; i < followers.size(); i++) {
          if (!latestFollowers.contains(followers.get(i).getScreenName())) {
            Log.v(TAG, "inserting @" + followers.get(i).getScreenName() + " as new follower");
            newFollowers.add(followers.get(i));
            newActivity = true;
          } else {
            break;
          }
        }
      }

      insertFollowers(newFollowers);

      latestFollowers.clear();
      for (int i = 0; i < 50; i++) {
        if (i < followers.size()) {
          latestFollowers.add(followers.get(i).getScreenName());
        } else {
          break;
        }
      }

      SharedPreferences.Editor e = sharedPrefs.edit();
      e.putStringSet("activity_latest_followers_" + currentAccount, latestFollowers);
      e.putInt("activity_follower_count_" + currentAccount, me.getFollowersCount());
      e.commit();
    } catch (TwitterException e) {
      e.printStackTrace();
    }

    return newActivity;
  }
Beispiel #15
0
 @Test
 public void testBulkShow() {
   Twitter tw = TwitterTest.newTestTwitter();
   List<User> users =
       tw.users()
           .show(Arrays.asList("winterstein", "joehalliwell", "annettemees", "bogus1yudsah"));
   System.out.println(users);
   assert users.size() == 3 : users; // no bogus user
   assert users.get(1).description != null;
 }
Beispiel #16
0
  @Test
  public void testSearchUsers() {
    Twitter tw = TwitterTest.newTestTwitter();

    List<User> users = tw.searchUsers("Nigel Griffiths");
    System.out.println(users);

    // AND Doesn't work!
    List<User> users2 = tw.searchUsers("Fred near:Scotland");
    assert !users.isEmpty();
  }
Beispiel #17
0
  @Test
  public void testBulkShowAllBogus() {
    Twitter tw = TwitterTest.newTestTwitter();
    List<User> users = tw.users().show(Arrays.asList("bogus1gyuvjwu", "bogus2yudsah"));
    System.out.println(users);
    assert users.isEmpty() : users; // no bogus user	

    List<User> users2 = tw.users().showById(Arrays.asList(1, 2));
    System.out.println(users2);
    assert users2.isEmpty() : users2; // no bogus user
  }
 public List<User> getFollowing(int num) {
   try {
     List<User> b = new ArrayList<User>();
     for (twitter4j.User u : twitter.getFriendsList(twitter.verifyCredentials().getId(), -1)) {
       b.add(new TwitterUser(u));
     }
     return b;
   } catch (TwitterException e) {
     e.printStackTrace();
     return null;
   }
 }
Beispiel #19
0
 @Test
 public void testDeletedUser() {
   Twitter tw = TwitterTest.newTestTwitter();
   // NB Once Twitter delete an account, it will 404 (rather than 403)
   try {
     tw.show("radio_kulmbach");
     assert false;
   } catch (TwitterException.SuspendedUser ex) {
     // OK
   } catch (TwitterException.E404 ex) {
     // OK
   }
 }
Beispiel #20
0
 @Test
 public void testGetFriendIDs() {
   {
     Twitter tw = TwitterTest.newTestTwitter();
     List<Number> friends = tw.users().getFriendIDs();
     assert friends != null && !friends.isEmpty();
   }
   {
     Twitter tw = new Twitter();
     List<Number> friends = tw.users().getFriendIDs("winterstein");
     assert friends != null && !friends.isEmpty();
   }
 }
  // 6355366
  private static void testTwitterAPI() throws Exception {

    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
        .setOAuthConsumerKey("qHzxaFrfzktB7DonlQXLzQ")
        .setOAuthConsumerSecret("WTcdE2vN9U3nl3t6mQkUbfF4PNNey2t2dp78AEajp8")
        .setOAuthAccessToken("351435596-KpFoMU2mdiu5OhdBi0BRPpdd7bQgkJFakkTV6Zh6")
        .setOAuthAccessTokenSecret("80OjYaYPmmKYG6DAUCSfstJEMPl2UnnLJunF8r0GGXQ");
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();
    // DirectMessage msg = twitter.sendDirectMessage("prakash_sandeep", "test direct message1.");
    Status status = twitter.updateStatus("This is a test message13.");
    // System.out.println(msg + " published a message.");
  }
 @Test
 public void testSerialisation() throws IOException {
   Twitter tt = TwitterTest.newTestTwitter();
   IHttpClient client = tt.getHttpClient();
   XStreamBinaryConverter conv = new XStreamBinaryConverter();
   { // serialise
     String s = conv.toString(client);
     IHttpClient c2 = (IHttpClient) conv.fromString(s);
   }
   { // serialise
     String s = conv.toString(tt);
     Twitter tt2 = (Twitter) conv.fromString(s);
   }
 }
Beispiel #23
0
 /**
  * @return true if followerScreenName <i>is</i> following followedScreenName
  * @throws TwitterException.E403 if one of the users has protected their updates and you don't
  *     have access. This can be counter-intuitive (and annoying) at times! Also throws E403 if one
  *     of the users has been suspended (we use the {@link SuspendedUser} exception sub-class for
  *     this).
  * @throws TwitterException.E404 if one of the users does not exist
  */
 public boolean isFollower(String followerScreenName, String followedScreenName) {
   assert followerScreenName != null && followedScreenName != null;
   try {
     Map vars =
         InternalUtils.asMap(
             "source_screen_name", followerScreenName,
             "target_screen_name", followedScreenName);
     String page =
         http.getPage(jtwit.TWITTER_URL + "/friendships/show.json", vars, http.canAuthenticate());
     JSONObject jo = new JSONObject(page);
     JSONObject trgt = jo.getJSONObject("relationship").getJSONObject("target");
     boolean fby = trgt.getBoolean("followed_by");
     return fby;
   } catch (TwitterException.E403 e) {
     if (e instanceof SuspendedUser) throw e;
     // Should this be a suspended user exception instead?
     // Let's ask Twitter
     // TODO check rate limits - only do if we have spare capacity
     String whoFirst =
         followedScreenName.equals(jtwit.getScreenName())
             ? followerScreenName
             : followedScreenName;
     try {
       // this could throw a SuspendedUser exception
       show(whoFirst);
       String whoSecond =
           whoFirst.equals(followedScreenName) ? followerScreenName : followedScreenName;
       if (whoSecond.equals(jtwit.getScreenName())) throw e;
       show(whoSecond);
     } catch (TwitterException.RateLimit e2) {
       // ignore
     }
     // both shows worked?
     throw e;
   } catch (TwitterException e) {
     // FIXME investigating a weird new bug
     if (e.getMessage() != null
         && e.getMessage().contains("Two user ids or screen_names must be supplied"))
       throw new TwitterException(
           "WTF? inputs: follower="
               + followerScreenName
               + ", followed="
               + followedScreenName
               + ", call-by="
               + jtwit.getScreenName()
               + "; "
               + e.getMessage());
     throw e;
   }
 }
  /**
   * It returns MAX(available_tweets,200,limit) tweets from the search of the specified query. In
   * case of error, returns null.
   */
  public QueryResult searchTweets(String queryTerm, int limit) {

    try {
      Query query = new Query(queryTerm);
      query.setCount(limit);
      QueryResult result = twitter.search(query);
      LoggerClass.log(
          Level.INFO,
          "OK. Searching tweets for term "
              + queryTerm
              + " and limit "
              + limit
              + ". "
              + result.getCount()
              + " results.");
      return result;
    } catch (Exception ex) {
      LoggerClass.log(
          Level.SEVERE,
          "ERROR searching tweets for term " + queryTerm + " and limit " + limit + ".");
      System.err.println("[ERROR] Can't search tweets");
      ex.printStackTrace();
      return null;
    }
  }
Beispiel #25
0
 /**
  * Start following a user.
  *
  * @param username Required. The ID or screen name of the user to befriend.
  * @return The befriended user, or null if (a) they were already being followed, or (b) they
  *     protect their tweets & you already requested to follow them.
  * @throws TwitterException if the user does not exist or has been suspended.
  * @see #stopFollowing(String)
  */
 public User follow(String username) throws TwitterException {
   if (username == null) throw new NullPointerException();
   if (username.equals(jtwit.getScreenName()))
     throw new IllegalArgumentException("follow yourself makes no sense");
   String page = null;
   try {
     Map<String, String> vars = InternalUtils.asMap("screen_name", username);
     page = http.post(jtwit.TWITTER_URL + "/friendships/create.json", vars, true);
     // is this needed? doesn't seem to fix things
     // http.getPage(jtwit.TWITTER_URL+"/friends", null, true);
     return new User(new JSONObject(page), null);
   } catch (SuspendedUser e) {
     throw e;
   } catch (TwitterException.Repetition e) {
     return null;
   } catch (E403 e) {
     // check if we've tried to follow someone we're already following
     try {
       if (isFollowing(username)) return null;
     } catch (TwitterException e2) {
       // no extra info then
     }
     throw e;
   } catch (JSONException e) {
     throw new TwitterException.Parsing(page, e);
   }
 }
Beispiel #26
0
 /**
  * Use cursors to fetch upto jtwit.maxResults TODO More controlled paging??
  *
  * @param url API method to call
  * @param screenName
  * @param userId
  * @return twitter-id numbers for friends/followers of screenName or userId Is affected by {@link
  *     #maxResults}
  */
 private List<Number> getUserIDs(String url, String screenName, Long userId) {
   Long cursor = -1L;
   List<Number> ids = new ArrayList<Number>();
   if (screenName != null && userId != null)
     throw new IllegalArgumentException(
         "cannot use both screen_name and user_id when fetching user_ids");
   Map<String, String> vars = InternalUtils.asMap("screen_name", screenName, "user_id", userId);
   while (cursor != 0 && !jtwit.enoughResults(ids)) {
     vars.put("cursor", String.valueOf(cursor));
     String json = http.getPage(url, vars, http.canAuthenticate());
     try {
       // it seems Twitter will occasionally return a raw array
       JSONArray jarr;
       if (json.charAt(0) == '[') {
         jarr = new JSONArray(json);
         cursor = 0L;
       } else {
         JSONObject jobj = new JSONObject(json);
         jarr = (JSONArray) jobj.get("ids");
         cursor = new Long(jobj.getString("next_cursor"));
       }
       for (int i = 0; i < jarr.length(); i++) {
         ids.add(jarr.getLong(i));
       }
       if (jarr.length() == 0) {
         // No more
         break;
       }
     } catch (JSONException e) {
       throw new TwitterException.Parsing(json, e);
     }
   }
   return ids;
 }
 public List<Status> getMyTweets(Twitter twitter) {
   try {
     Paging paging = new Paging(1, 20);
     return twitter.getUserTimeline(paging);
   } catch (TwitterException e) {
     return null;
   }
 }
 public Map<String, RateLimitStatus> getRateLimit() {
   try {
     return twitter.getRateLimitStatus();
   } catch (TwitterException e) {
     e.printStackTrace();
     return null;
   }
 }
 public User getUser(String name) {
   try {
     return new TwitterUser(twitter.showUser(name));
   } catch (TwitterException e) {
     e.printStackTrace();
     return null;
   }
 }
Beispiel #30
0
  public void attachActivity(TwitterBaseActivity baseAc) {
    super.attachActivity(baseAc);
    http.attachActivity(baseAc);

    if (baseAc != null) {
      this.setUseHttps(baseAc.getSocialORM().getTwitterUseHttps());
    }
  }