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 static void printTweet(Status tweet, boolean isStream) { String time; if (isStream) { time = ""; try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException ie) { ie.printStackTrace(); } } else { time = getTimeForm(tweet) + " "; } System.out.println(SEPARATOR); String uName = tweet.getUser().getScreenName(); String text = tweet.getText(); Integer retweets = tweet.getRetweetCount(); if (tweet.isRetweet()) { Pattern myPattern = Pattern.compile("RT @([^ ]*): (.*)"); Matcher m = myPattern.matcher(text); m.find(); String uRTName = m.group(1); text = m.group(2); System.out.println(time + "@" + uName + ": ретвитнул @" + uRTName + ": " + text); } else { System.out.println(time + "@" + uName + ": " + text + retweetsForm(retweets)); } }
public static boolean isEligible(Status tweet) { if (!tweet.getLang().equalsIgnoreCase("en")) { return false; } else if (tweet.isRetweet()) { return false; } else { return true; } }
public void testRetweetStatusAsJSON() throws Exception { // single Status HttpClientImpl http = new HttpClientImpl(); Status status = new StatusJSONImpl( http.get("http://twitter4j.org/en/testcases/statuses/retweet/6010814202.json"), conf); Assert.assertEquals(new Date(1259078050000l), status.getCreatedAt()); Assert.assertEquals(6011259778l, status.getId()); Assert.assertEquals(null, status.getInReplyToScreenName()); Assert.assertEquals(-1l, status.getInReplyToStatusId()); Assert.assertEquals(-1, status.getInReplyToUserId()); Assert.assertNull(status.getGeoLocation()); Assert.assertEquals( "<a href=\"http://apiwiki.twitter.com/\" rel=\"nofollow\">API</a>", status.getSource()); Assert.assertEquals( "RT @yusukey: この前取材受けた奴 -> 次世代のシステム環境を見据えたアプリケーションサーバー製品の選択 ITpro: http://special.nikkeibp.co.jp/ts/article/0iaa/104388/", status.getText()); Assert.assertEquals(6358482, status.getUser().getId()); Assert.assertTrue(status.isRetweet()); assertDeserializedFormIsEqual(status); }
public void testStatusAsJSON() throws Exception { // single Status HttpClientImpl http = new HttpClientImpl(); List<Status> statuses = StatusJSONImpl.createStatusList( http.get("http://twitter4j.org/en/testcases/statuses/public_timeline.json"), conf); Status status = statuses.get(0); Assert.assertEquals(new Date(1259041785000l), status.getCreatedAt()); Assert.assertEquals(6000554383l, status.getId()); Assert.assertEquals("G_Shock22", status.getInReplyToScreenName()); Assert.assertEquals(6000444309l, status.getInReplyToStatusId()); Assert.assertEquals(20159829, status.getInReplyToUserId()); Assert.assertNull(status.getGeoLocation()); Assert.assertEquals("web", status.getSource()); Assert.assertEquals( "@G_Shock22 I smelled a roast session coming when yu said that shyt about @2koolNicia lol....", status.getText()); Assert.assertEquals(23459577, status.getUser().getId()); Assert.assertFalse(status.isRetweet()); assertDeserializedFormIsEqual(statuses); }