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(); } } }
@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) { } }
@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()); } } }
@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); } }
@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); } }
/** 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; }
@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; }
@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; }
@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(); }
@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; } }
@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 } }
@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); } }
/** * @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; } }
/** * 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); } }
/** * 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; } }
public void attachActivity(TwitterBaseActivity baseAc) { super.attachActivity(baseAc); http.attachActivity(baseAc); if (baseAc != null) { this.setUseHttps(baseAc.getSocialORM().getTwitterUseHttps()); } }