List of usage examples for twitter4j Query setUntil
public void setUntil(String until)
From source file:com.daemon.Minion.java
License:Open Source License
/** * Sends a request specified as search term to Twitter and returns the * results Twitter returned.// w w w . j a v a 2 s . co m * * @param term The search term object. * @return The answer of the sent request as QueryResult. * @throws TwitterException Thrown whenever there is a problem querying Twitter * (i. e the Rate Limit was reached). */ public QueryResult search(SearchTerm term) throws TwitterException { Query query = new Query(term.getTerm()); query.setCount(100); query.setResultType(Query.RECENT); if (term.getLastFetchedTweetId() == null) { // Start a new backwards search fron the current given start if (term.getOldStart() == null) query.setUntil(Localization.DATETIME_FORMATTER.print(term.getCurrentStart().plusDays(1))); } else // Continue the current search from the last fetched tweet id query.setMaxId(term.getLastFetchedTweetId()); return _twitter.search(query); }
From source file:it.greenvulcano.gvesb.social.twitter.directcall.TwitterOperationSearch.java
License:Open Source License
@Override public void execute(SocialAdapterAccount account) throws SocialAdapterException { try {/* w w w .j a v a 2 s. c om*/ Twitter twitter = (Twitter) account.getProxyObject(); Query q = new Query(); if ((query != null) && !"".equals(query)) { q.setQuery(query); } if ((sinceId != null) && !"".equals(sinceId)) { q.setSinceId(Long.parseLong(sinceId)); } if ((maxId != null) && !"".equals(maxId)) { q.setMaxId(Long.parseLong(maxId)); } if ((since != null) && !"".equals(since)) { q.setSince(since); } if ((until != null) && !"".equals(until)) { q.setUntil(until); } if ((count != null) && !"".equals(count)) { q.setCount(Integer.parseInt(count)); } XMLUtils parser = null; try { parser = XMLUtils.getParserInstance(); doc = parser.newDocument("TwitterQuery"); Element root = doc.getDocumentElement(); parser.setAttribute(root, "user", twitter.getScreenName()); parser.setAttribute(root, "userId", String.valueOf(twitter.getId())); parser.setAttribute(root, "createdAt", DateUtils.nowToString(DateUtils.FORMAT_ISO_DATETIME_UTC)); QueryResult result; do { result = twitter.search(q); List<Status> tweets = result.getTweets(); for (Status tweet : tweets) { dumpTweet(parser, root, tweet); } } while ((q = result.nextQuery()) != null); } catch (Exception exc) { logger.error("Error formatting TwitterOperationSearch query[" + query + "], sinceId[" + sinceId + "], maxId[" + maxId + "], since[" + since + "], until[" + until + "] and count[" + count + "] response.", exc); throw new SocialAdapterException("Error formatting TwitterOperationSearch query[" + query + "], sinceId[" + sinceId + "], maxId[" + maxId + "], since[" + since + "], until[" + until + "] and count[" + count + "] response.", exc); } finally { XMLUtils.releaseParserInstance(parser); } } catch (NumberFormatException exc) { logger.error("Call to TwitterOperationSearch failed. Check query[" + query + "], sinceId[" + sinceId + "], maxId[" + maxId + "], since[" + since + "], until[" + until + "] and count[" + count + "] format.", exc); throw new SocialAdapterException("Call to TwitterOperationSearch failed. Check query[" + query + "], sinceId[" + sinceId + "], maxId[" + maxId + "], since[" + since + "], until[" + until + "] and count[" + count + "] format.", exc); } }
From source file:org.anc.lapps.datasource.twitter.TwitterDatasource.java
/** * Entry point for a Lappsgrid service./*from w w w . java 2s . co m*/ * <p> * Each service on the Lappsgrid will accept {@code org.lappsgrid.serialization.Data} object * and return a {@code Data} object with a {@code org.lappsgrid.serialization.lif.Container} * payload. * <p> * Errors and exceptions that occur during processing should be wrapped in a {@code Data} * object with the discriminator set to http://vocab.lappsgrid.org/ns/error * <p> * See <a href="https://lapp.github.io/org.lappsgrid.serialization/index.html?org/lappsgrid/serialization/Data.html>org.lappsgrid.serialization.Data</a><br /> * See <a href="https://lapp.github.io/org.lappsgrid.serialization/index.html?org/lappsgrid/serialization/lif/Container.html>org.lappsgrid.serialization.lif.Container</a><br /> * * @param input A JSON string representing a Data object * @return A JSON string containing a Data object with a Container payload. */ @Override public String execute(String input) { Data<String> data = Serializer.parse(input, Data.class); String discriminator = data.getDiscriminator(); // Return ERRORS back if (Discriminators.Uri.ERROR.equals(discriminator)) { return input; } // Generate an error if the used discriminator is wrong if (!Discriminators.Uri.GET.equals(discriminator)) { return generateError( "Invalid discriminator.\nExpected " + Discriminators.Uri.GET + "\nFound " + discriminator); } Configuration config = new ConfigurationBuilder().setApplicationOnlyAuthEnabled(true).setDebugEnabled(false) .build(); // Authentication using saved keys Twitter twitter = new TwitterFactory(config).getInstance(); String key = readProperty(KEY_PROPERTY); if (key == null) { return generateError("The Twitter Consumer Key property has not been set."); } String secret = readProperty(SECRET_PROPERTY); if (secret == null) { return generateError("The Twitter Consumer Secret property has not been set."); } twitter.setOAuthConsumer(key, secret); try { twitter.getOAuth2Token(); } catch (TwitterException te) { String errorData = generateError(te.getMessage()); logger.error(errorData); return errorData; } // Get query String from data payload Query query = new Query(data.getPayload()); // Set the type to Popular or Recent if specified // Results will be Mixed by default. if (data.getParameter("type") == "Popular") query.setResultType(Query.POPULAR); if (data.getParameter("type") == "Recent") query.setResultType(Query.RECENT); // Get lang string String langCode = (String) data.getParameter("lang"); // Verify the validity of the language code and add it to the query if it's valid if (validateLangCode(langCode)) query.setLang(langCode); // Get date strings String sinceString = (String) data.getParameter("since"); String untilString = (String) data.getParameter("until"); // Verify the format of the date strings and set the parameters to query if correctly given if (validateDateFormat(untilString)) query.setUntil(untilString); if (validateDateFormat(sinceString)) query.setSince(sinceString); // Get GeoLocation if (data.getParameter("address") != null) { String address = (String) data.getParameter("address"); double radius = (double) data.getParameter("radius"); if (radius <= 0) radius = 10; Query.Unit unit = Query.MILES; if (data.getParameter("unit") == "km") unit = Query.KILOMETERS; GeoLocation geoLocation; try { double[] coordinates = getGeocode(address); geoLocation = new GeoLocation(coordinates[0], coordinates[1]); } catch (Exception e) { String errorData = generateError(e.getMessage()); logger.error(errorData); return errorData; } query.geoCode(geoLocation, radius, String.valueOf(unit)); } // Get the number of tweets from count parameter, and set it to default = 15 if not specified int numberOfTweets; try { numberOfTweets = (int) data.getParameter("count"); } catch (NullPointerException e) { numberOfTweets = 15; } // Generate an ArrayList of the wanted number of tweets, and handle possible errors. // This is meant to avoid the 100 tweet limit set by twitter4j and extract as many tweets as needed ArrayList<Status> allTweets; Data tweetsData = getTweetsByCount(numberOfTweets, query, twitter); String tweetsDataDisc = tweetsData.getDiscriminator(); if (Discriminators.Uri.ERROR.equals(tweetsDataDisc)) return tweetsData.asPrettyJson(); else { allTweets = (ArrayList<Status>) tweetsData.getPayload(); } // Initialize StringBuilder to hold the final string StringBuilder builder = new StringBuilder(); // Append each Status (each tweet) to the initialized builder for (Status status : allTweets) { String single = status.getCreatedAt() + " : " + status.getUser().getScreenName() + " : " + status.getText() + "\n"; builder.append(single); } // Output results Container container = new Container(); container.setText(builder.toString()); Data<Container> output = new Data<>(Discriminators.Uri.LAPPS, container); return output.asPrettyJson(); }
From source file:org.codice.ddf.catalog.twitter.source.TwitterSource.java
License:Open Source License
@Override public SourceResponse query(QueryRequest request) throws UnsupportedQueryException { Twitter instance = twitterFactory.getInstance(); try {//from ww w . j a va 2s. c o m instance.getOAuth2Token(); } catch (TwitterException e) { throw new UnsupportedQueryException("Unable to get OAuth2 token.", e); } TwitterFilterVisitor visitor = new TwitterFilterVisitor(); request.getQuery().accept(visitor, null); Query query = new Query(); query.setCount(request.getQuery().getPageSize()); if (visitor.hasSpatial()) { GeoLocation geoLocation = new GeoLocation(visitor.getLatitude(), visitor.getLongitude()); query.setGeoCode(geoLocation, visitor.getRadius(), Query.Unit.km); } if (visitor.getContextualSearch() != null) { query.setQuery(visitor.getContextualSearch().getSearchPhrase()); } if (visitor.getTemporalSearch() != null) { Calendar.Builder builder = new Calendar.Builder(); builder.setInstant(visitor.getTemporalSearch().getStartDate()); Calendar calendar = builder.build(); query.setSince(calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH)); builder = new Calendar.Builder(); builder.setInstant(visitor.getTemporalSearch().getEndDate()); calendar = builder.build(); query.setUntil(calendar.get(Calendar.YEAR) + "-" + calendar.get(Calendar.MONTH) + "-" + calendar.get(Calendar.DAY_OF_MONTH)); } QueryResult queryResult; try { queryResult = instance.search().search(query); } catch (TwitterException e) { throw new UnsupportedQueryException(e); } List<Result> resultList = new ArrayList<>(queryResult.getCount()); resultList.addAll(queryResult.getTweets().stream().map(status -> new ResultImpl(getMetacard(status))) .collect(Collectors.toList())); return new SourceResponseImpl(request, resultList); }
From source file:org.mule.twitter.TwitterConnector.java
License:Open Source License
/** * Returns tweets that match a specified query. * <p/>/*from w ww .j a va 2 s . c o m*/ * This method calls http://search.twitter.com/search.json * <p/> * {@sample.xml ../../../doc/twitter-connector.xml.sample twitter:search} * * @param query The search query. * @param lang Restricts tweets to the given language, given by an <a href="http://en.wikipedia.org/wiki/ISO_639-1">ISO 639-1 code</a> * @param locale Specify the language of the query you are sending (only ja is currently effective). This is intended for language-specific clients and the default should work in the majority of cases. * @param maxId If specified, returns tweets with status ids less than the given id * @param since If specified, returns tweets since the given date. Date should be formatted as YYYY-MM-DD * @param sinceId Returns tweets with status ids greater than the given id. * @param geocode A {@link String} containing the latitude and longitude separated by ','. Used to get the tweets by users located within a given radius of the given latitude/longitude, where the user's location is taken from their Twitter profile * @param radius The radius to be used in the geocode -ONLY VALID IF A GEOCODE IS GIVEN- * @param unit The unit of measurement of the given radius. Can be 'mi' or 'km'. Miles by default. * @param until If specified, returns tweets with generated before the given date. Date should be formatted as YYYY-MM-DD * @param resultType If specified, returns tweets included popular or real time or both in the responce. Both by default. Can be 'mixed', 'popular' or 'recent'. * @return the {@link QueryResult} * @throws TwitterException when Twitter service or network is unavailable */ @Processor public QueryResult search(String query, @Optional String lang, @Optional String locale, @Optional Long maxId, @Optional String since, @Optional Long sinceId, @Optional String geocode, @Optional String radius, @Default(value = Query.MILES) @Optional String unit, @Optional String until, @Optional String resultType) throws TwitterException { final Query q = new Query(query); if (lang != null) { q.setLang(lang); } if (locale != null) { q.setLocale(locale); } if (maxId != null && maxId.longValue() != 0) { q.setMaxId(maxId.longValue()); } if (since != null) { q.setSince(since); } if (sinceId != null && sinceId.longValue() != 0) { q.setSinceId(sinceId.longValue()); } if (geocode != null) { final String[] geocodeSplit = StringUtils.split(geocode, ','); final double latitude = Double.parseDouble(StringUtils.replace(geocodeSplit[0], " ", "")); final double longitude = Double.parseDouble(StringUtils.replace(geocodeSplit[1], " ", "")); q.setGeoCode(new GeoLocation(latitude, longitude), Double.parseDouble(radius), unit); } if (until != null) { q.setUntil(until); } if (resultType != null) { q.setResultType(resultType); } return twitter.search(q); }
From source file:org.n52.twitter.dao.TwitterSearchDAO.java
License:Open Source License
@Override public Collection<TwitterMessage> search(double latitude, double longitude, int distanceMeters, DateTime fromDate, DateTime toDate) throws TwitterException, DecodingException { Query searchQuery = new Query(); searchQuery.setGeoCode(new GeoLocation(latitude, longitude), distanceMeters / 1000, DEFAULT_UNIT); if (toDate != null) { searchQuery.setUntil(toDate.toString("YYYY-MM-dd")); }// w w w. j a va2s . c om if (fromDate != null) { searchQuery.setSince(fromDate.toString("YYYY-MM-dd")); } return executeApiRequest(searchQuery); }
From source file:org.wandora.application.tools.extractors.twitter.TwitterExtractorUI.java
License:Open Source License
public Query[] getSearchQuery() { String query = queryTextField.getText(); String lang = langTextField.getText().trim(); String until = untilTextField.getText().trim(); String since = sinceTextField.getText().trim(); GeoLocation geol = solveGeoLocation(); double distance = solveDistance(); ArrayList<Query> queries = new ArrayList(); Query q = new Query(query); if (lang.length() > 0) q.setLang(lang);/*from ww w. j ava 2 s. c o m*/ if (until.length() > 0) q.setUntil(until); if (since.length() > 0) q.setSince(since); if (geol != null) q.setGeoCode(geol, distance, Query.KILOMETERS); q.count(100); queries.add(q); return queries.toArray(new Query[] {}); }
From source file:org.xmlsh.twitter.search.java
License:BSD License
@Override public int run(List<XValue> args) throws Exception { Options opts = new Options(sCOMMON_OPTS + ",q=query:,geo=geocode:,lang:,locale:,t=result_type:,until:,since_id:,max_id:,include_entities:,sanitize", SerializeOpts.getOptionDefs()); opts.parse(args);/* w w w . j a va2s . c om*/ mSerializeOpts = this.getSerializeOpts(opts); final boolean bSanitize = opts.hasOpt("sanitize"); args = opts.getRemainingArgs(); try { Twitter twitter = new TwitterFactory().getInstance(); Query query = new Query(); if (opts.hasOpt("query")) query.setQuery(opts.getOptStringRequired("query")); if (opts.hasOpt("lang")) query.setLang(opts.getOptStringRequired("lang")); if (opts.hasOpt("locale")) query.setLocale(opts.getOptStringRequired("locale")); if (opts.hasOpt("result_type")) query.setResultType(opts.getOptStringRequired("result_type")); if (opts.hasOpt("until")) query.setUntil(opts.getOptStringRequired("until")); if (opts.hasOpt("since_id")) query.setSinceId(opts.getOptValue("since_id").toLong()); if (opts.hasOpt("since")) query.setUntil(opts.getOptStringRequired("since")); if (opts.hasOpt("max_id")) query.setSinceId(opts.getOptValue("max_id").toLong()); QueryResult result = twitter.search(query); List<Status> tweets = result.getTweets(); OutputPort out = this.getStdout(); mWriter = new TwitterWriter(out.asXMLStreamWriter(mSerializeOpts), bSanitize); mWriter.startDocument(); mWriter.startElement("twitter"); mWriter.writeDefaultNamespace(); for (Status t : tweets) mWriter.write(t); mWriter.endElement(); mWriter.endDocument(); mWriter.closeWriter(); out.release(); } finally { } return 0; }
From source file:ru.mail.sphere.java_hw5_vasilyev.twitteraccessor.Accessor.java
private static Query buildSearchQuery(String query, Date since, Date until, String lang, int querySize) { Query queryObject = new Query(query); queryObject.setCount(querySize <= MAX_QUERY_SIZE ? querySize : MAX_QUERY_SIZE); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); queryObject.setSince(dateFormat.format(since)); if (until != null) { queryObject.setUntil(dateFormat.format(until)); }//w ww. j a v a 2 s .c om if (lang != null) { queryObject.setLang(lang); } return queryObject; }
From source file:tweets_stock_price_prediction.TweetsManager.java
public ArrayList<String> getTweets(String topic, String fromDate, String toDate) { //Twitter twitter = new TwitterFactory().getInstance(); System.out.println("*** TWITTER QUERY: " + topic); ArrayList<String> tweetList = new ArrayList<String>(); try {//from ww w . j a va 2s. c o m Query query = new Query(topic); query.setLang("en"); //query.setCount(count); query.setSince(fromDate); query.setUntil(toDate); QueryResult result; do { result = twitter.search(query); List<Status> tweets = result.getTweets(); for (Status tweet : tweets) { //System.out.print("LANGUAGE " + tweet.getLang() + "\n\n"); //if (tweet.getLang().equals("en")) { tweetList.add(tweet.getText()); //} } } while ((query = result.nextQuery()) != null); } catch (TwitterException te) { te.printStackTrace(); System.out.println("Failed to search tweets: " + te.getMessage()); } System.out.println("************ TWEET LIST: " + tweetList.size()); return tweetList; }