List of usage examples for twitter4j Query setSinceId
public void setSinceId(long sinceId)
From source file:au.net.moon.tSearchArchiver.SearchArchiver.java
License:Open Source License
SearchArchiver() { Twitter twitter;//from w w w . ja v a2s. c o m int waitBetweenRequests = 2000; // 2 sec delay between requests to avoid maxing out the API. Status theTweet; Query query; QueryResult result; // String[] searches; ArrayList<String> searchQuery = new ArrayList<String>(); ArrayList<Integer> searchId = new ArrayList<Integer>(); int searchIndex; int totalTweets; SimpleDateFormat myFormatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z"); System.out.println("tSearchArchiver: Loading search queries..."); // Set timezone to UTC for the Twitter created at dates myFormatter.setTimeZone(TimeZone.getTimeZone("UTC")); twitterAuthorise twitterAuth = new twitterAuthorise(false); twitter = twitterAuth.getTwitter(); // Open the old twitter_archive database openSQLDataBase(); if (isDatabaseReady()) { // probably should have these in an object not separate arrays? try { rs = stmt.executeQuery("select * from searches where active = true"); // perform each search while (rs.next()) { // if (searchQuery searchQuery.add(rs.getString("query")); searchId.add(rs.getInt("id")); } if (rs.wasNull()) { System.out.println("tSearchArchiver: No searches in the table \"searches\""); System.exit(30); } else { System.out.println("tSearchArchiver: Found " + searchQuery.size() + " searches."); } } catch (SQLException e) { System.out.println("tSearchArchiver: e:" + e.toString()); } searchIndex = 0; totalTweets = 0; // set initial value of i to start from middle of search set while (searchIndex < searchQuery.size()) { query = new Query(); query.setQuery(searchQuery.get(searchIndex)); // check to see if their are any tweets already in the database for // this search //TODO: Change this to look in new raw data files for each search instead long max_tw_id = 0; try { rs = stmt.executeQuery("select max(tweet_id) as max_id from archive where search_id = " + searchId.get(searchIndex)); if (rs.next()) { max_tw_id = rs.getLong("max_id"); // System.out.println("MaxID: " + max_tw_id); query.setSinceId(max_tw_id); } } catch (SQLException e1) { System.err.println("tSearchArchiver: Error looking for maximum tweet_id for " + query.getQuery() + " in archive"); e1.printStackTrace(); } // System.out.println("Starting searching for tweets for: " + // query.getQuery()); // new style replacement for pagination // Query query = new Query("whatEverYouWantToSearch"); // do { // result = twitter.search(query); // System.out.println(result); // do something // } while ((query = result.nextQuery()) != null); // TODO: check if twitter4j is doing all the backing off handling already int tweetCount = 0; Boolean searching = true; do { // delay waitBetweenRequests milliseconds before making request // to make sure not overloading API try { Thread.sleep(waitBetweenRequests); } catch (InterruptedException e1) { System.err.println("tSearchArchiver: Sleep between requests failed."); e1.printStackTrace(); } try { result = twitter.search(query); } catch (TwitterException e) { System.out.println(e.getStatusCode()); System.out.println(e.toString()); if (e.getStatusCode() == 503) { // TODO use the Retry-After header value to delay & then // retry the request System.out .println("tSearchArchiver: Delaying for 10 minutes before making new request"); try { Thread.sleep(600000); } catch (InterruptedException e1) { System.err.println( "tSearchArchiver: Sleep for 10 minutes because of API load failed."); e1.printStackTrace(); } } result = null; } if (result != null) { List<Status> results = result.getTweets(); if (results.size() == 0) { searching = false; } else { tweetCount += results.size(); for (int j = 0; j < results.size(); j++) { theTweet = (Status) results.get(j); String cleanText = theTweet.getText(); cleanText = cleanText.replaceAll("'", "'"); cleanText = cleanText.replaceAll("\"", """); try { stmt.executeUpdate("insert into archive values (0, " + searchId.get(searchIndex) + ", '" + theTweet.getId() + "', now())"); } catch (SQLException e) { System.err.println("tSearchArchiver: Insert into archive failed."); System.err.println(searchId.get(searchIndex) + ", " + theTweet.getId()); e.printStackTrace(); } // TODO: change to storing in file instead of database try { rs = stmt.executeQuery("select id from tweets where id = " + theTweet.getId()); } catch (SQLException e) { System.err.println( "tSearchArchiver: checking for tweet in tweets archive failed."); e.printStackTrace(); } Boolean tweetNotInArchive = false; try { tweetNotInArchive = !rs.next(); } catch (SQLException e) { System.err.println( "tSearchArchiver: checking for tweet in archive failed at rs.next()."); e.printStackTrace(); } if (tweetNotInArchive) { String tempLangCode = ""; // getIsoLanguageCode() has been removed from twitter4j // looks like it might be added back in in the next version // if (tweet.getIsoLanguageCode() != null) { // if (tweet.getIsoLanguageCode().length() > 2) { // System.out // .println("tSearchArchiver Error: IsoLanguageCode too long: >" // + tweet.getIsoLanguageCode() // + "<"); // tempLangCode = tweet // .getIsoLanguageCode() // .substring(0, 2); // } else { // tempLangCode = tweet // .getIsoLanguageCode(); // } // } double myLatitude = 0; double myLongitude = 0; int hasGeoCode = 0; if (theTweet.getGeoLocation() != null) { System.out.println("GeoLocation: " + theTweet.getGeoLocation().toString()); myLatitude = theTweet.getGeoLocation().getLatitude(); myLongitude = theTweet.getGeoLocation().getLongitude(); hasGeoCode = 1; } Date tempCreatedAt = theTweet.getCreatedAt(); String myDate2 = myFormatter .format(tempCreatedAt, new StringBuffer(), new FieldPosition(0)) .toString(); totalTweets++; try { stmt.executeUpdate("insert into tweets values (" + theTweet.getId() + ", '" + tempLangCode + "', '" + theTweet.getSource() + "', '" + cleanText + "', '" + myDate2 + "', '" + theTweet.getInReplyToUserId() + "', '" + theTweet.getInReplyToScreenName() + "', '" + theTweet.getUser().getId() + "', '" + theTweet.getUser().getScreenName() + "', '" + hasGeoCode + "'," + myLatitude + ", " + myLongitude + ", now())"); } catch (SQLException e) { System.err.println("tSearchArchiver: Insert into tweets failed."); System.err.println(theTweet.getId() + ", '" + tempLangCode + "', '" + theTweet.getSource() + "', '" + cleanText + "', '" + myDate2 + "', '" + theTweet.getInReplyToUserId() + "', '" + theTweet.getInReplyToScreenName() + "', '" + theTweet.getUser().getId() + "', '" + theTweet.getUser().getScreenName()); e.printStackTrace(); } } } } } } while ((query = result.nextQuery()) != null && searching); if (tweetCount > 0) { System.out.println("tSearchArchiver: New Tweets Found for \"" + searchQuery.get(searchIndex) + "\" = " + tweetCount); } else { // System.out.println("tSearchArchiver: No Tweets Found for \"" // + searchQuery.get(searchIndex) + "\" = " + tweetCount); } try { stmt.executeUpdate("update searches SET lastFoundCount=" + tweetCount + ", lastSearchDate=now() where id=" + searchId.get(searchIndex)); } catch (SQLException e) { System.err.println("tSearchArchiver: failed to update searches with lastFoundCount=" + tweetCount + " and datetime for search: " + searchId.get(searchIndex)); e.printStackTrace(); } searchIndex++; } System.out.println("tSearchArchiver: Completed all " + searchQuery.size() + " searches"); System.out.println("tSearchArchiver: Archived " + totalTweets + " new tweets"); } }
From source file:com.aremaitch.codestock2010.library.TwitterLib.java
License:Apache License
public QueryResult search(long sinceId, String[] hashTags) throws TwitterException { Query q = new Query(); if (sinceId >= 0) { q.setSinceId(sinceId); }// www.j a v a 2 s. c o m q.setQuery(TextUtils.join(" OR ", hashTags)); try { return t.search(q); } catch (NumberFormatException nfe) { ACLogger.error(CSConstants.LOG_TAG, "number format exception was thrown by twitter4j"); } return null; }
From source file:com.concursive.connect.web.modules.profile.jobs.TwitterQueryJob.java
License:Open Source License
public void execute(JobExecutionContext context) throws JobExecutionException { long startTime = System.currentTimeMillis(); LOG.debug("Starting job..."); SchedulerContext schedulerContext = null; Connection db = null;/*from ww w. ja va 2 s . co m*/ try { schedulerContext = context.getScheduler().getContext(); // Determine if the twitter hash is enabled ApplicationPrefs prefs = (ApplicationPrefs) schedulerContext.get("ApplicationPrefs"); String twitterHash = prefs.get(ApplicationPrefs.TWITTER_HASH); if (!StringUtils.hasText(twitterHash)) { LOG.debug("Hash is not defined exiting from Twitter query job..."); return; } db = SchedulerUtils.getConnection(schedulerContext); // Determine the previous retrieved twitter id to use for query Process process = new Process(db, "TwitterQueryJob"); long sinceId = process.getLongValue(); LOG.debug("Last saved twitter id is : " + sinceId); // Create Query Object for searching twitter Query query = new Query("#" + twitterHash); query.setRpp(99); if (sinceId > 0) { // Set since_id in the query query.setSinceId(sinceId); } // Get the Twitter search results Twitter twitter = new Twitter(TWITTER_BASE_URL); QueryResult result = twitter.search(query); LOG.debug("Found and retrieved " + result.getTweets().size() + " tweet(s)."); // Iterate through the tweets and store in project history int count = 0; for (Tweet tweet : result.getTweets()) { count++; LOG.debug("Got tweet from " + tweet.getFromUser() + " as " + tweet.getText()); // See if this matches any profiles in the system // @note it's possible that more than one project can have the same twitter id ProjectList projectList = new ProjectList(); projectList.setTwitterId(tweet.getFromUser()); projectList.setApprovedOnly(true); projectList.buildList(db); // Clean up the tweet output String message = tweet.getText(); // Turn links into wiki links message = WikiUtils.addWikiLinks(message); // Remove the hash tag - beginning or middle message = StringUtils.replace(message, "#" + twitterHash + " ", ""); // Remove the hash tag - middle or end message = StringUtils.replace(message, " #" + twitterHash, ""); // Remove the hash tag - untokenized message = StringUtils.replace(message, "#" + twitterHash, ""); // Update the activity stream for the matching profiles for (Project project : projectList) { ProjectHistory projectHistory = new ProjectHistory(); projectHistory.setProjectId(project.getId()); projectHistory.setEnabled(true); // If there is a user profile, use the user's id, else use the businesses id? or use a different event if (project.getProfile()) { projectHistory.setEnteredBy(project.getOwner()); } else { projectHistory.setEnteredBy(project.getOwner()); } projectHistory.setLinkStartDate(new Timestamp(System.currentTimeMillis())); String desc = WikiLink.generateLink(project) + " [[http://twitter.com/" + tweet.getFromUser() + "/statuses/" + tweet.getId() + " tweeted]] " + message; projectHistory.setDescription(desc); projectHistory.setLinkItemId(project.getId()); projectHistory.setLinkObject(ProjectHistoryList.TWITTER_OBJECT); projectHistory.setEventType(ProjectHistoryList.TWITTER_EVENT); // Store the tweets in project history projectHistory.insert(db); } // Set the tweet id as since_Id if (sinceId < tweet.getId()) { sinceId = tweet.getId(); } } //update the recent sinceId and process timestamp process.setLongValue(sinceId); process.setProcessed(new Timestamp(new java.util.Date().getTime())); process.update(db); long endTime = System.currentTimeMillis(); long totalTime = endTime - startTime; LOG.debug("Finished: " + count + " took " + totalTime + " ms"); } catch (Exception e) { LOG.error("TwitterQueryJob Exception", e); throw new JobExecutionException(e.getMessage()); } finally { SchedulerUtils.freeConnection(schedulerContext, db); } }
From source file:com.infine.android.devoxx.service.TwitterService.java
License:Apache License
public void triggerRefresh() { try {//from w ww. j av a 2 s . c o m final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); long lastTweetId = prefs.getLong(LAST_TWEET_ID, 0); Query query = new Query(TWEETS_QUERY); if (lastTweetId > 0) { query.setSinceId(lastTweetId); } QueryResult result = mTwitter.search(query); Log.i("Twitter", "nombre de tweets recu:" + result.getTweets().size()); ArrayList<ContentProviderOperation> databaseOps = new ArrayList<ContentProviderOperation>(); long maxId = 0; for (Status status : result.getTweets()) { maxId = Math.max(maxId, status.getId()); databaseOps.add(buildCPOperation(status)); } // batch update if (!databaseOps.isEmpty()) { mResolver.applyBatch(ScheduleContract.CONTENT_AUTHORITY, databaseOps); } if (maxId > 0) { prefs.edit().putLong(LAST_TWEET_ID, maxId); } } catch (TwitterException e) { // pas de message c'est qui doit pas avoir de reseau // Toast.makeText(this, "Erreur durant la rcupration des Tweets", // Toast.LENGTH_SHORT).show(); } catch (RemoteException e) { // pas de message e.printStackTrace(); } catch (OperationApplicationException e) { // pas de message e.printStackTrace(); } }
From source file:com.javielinux.api.loaders.SearchLoader.java
License:Apache License
@Override public BaseResponse loadInBackground() { try {/*ww w.j av a2 s . c o m*/ SearchResponse response = new SearchResponse(); ConnectionManager.getInstance().open(getContext()); if (entitySearch.getInt("notifications") == 1) { response.setInfoSaveTweets(entitySearch.saveTweets(getContext(), false, since_id)); } else { response.setInfoSaveTweets(null); ArrayList<InfoTweet> infoTweets = new ArrayList<InfoTweet>(); if (entitySearch.isUser()) { // La bsqueda es de un usuario, as que buscamos en twitter directamente ResponseList<Status> statuses = ConnectionManager.getInstance().getUserForSearchesTwitter() .getUserTimeline(entitySearch.getString("from_user")); for (twitter4j.Status status : statuses) { infoTweets.add(new InfoTweet(status)); } } else { Query query = entitySearch.getQuery(getContext()); if (since_id != -1) query.setSinceId(since_id); QueryResult result = ConnectionManager.getInstance().getUserForSearchesTwitter().search(query); ArrayList<Status> tweets = (ArrayList<Status>) result.getTweets(); for (Status tweet : tweets) { infoTweets.add(new InfoTweet(tweet)); } } response.setInfoTweets(infoTweets); } return response; } catch (Exception e) { e.printStackTrace(); ErrorResponse response = new ErrorResponse(); response.setError(e, e.getMessage()); return response; } }
From source file:com.javielinux.database.EntitySearch.java
License:Apache License
public InfoSaveTweets saveTweets(Context cnt, boolean saveNotifications, long since_id) { ConnectionManager.getInstance().open(cnt); Twitter twitter = ConnectionManager.getInstance().getUserForSearchesTwitter(); InfoSaveTweets out = new InfoSaveTweets(); try {/*from w ww.ja va 2 s. com*/ int nResult = DataFramework.getInstance().getEntityListCount("tweets", "favorite=0 and search_id=" + getId()); Query query = getQuery(cnt); if (since_id != -1) query.setSinceId(since_id); QueryResult result = twitter.search(query); ArrayList<Status> tweets = (ArrayList<Status>) result.getTweets(); if (tweets.size() > 0) { out.setNewMessages(tweets.size()); out.setNewerId(tweets.get(0).getId()); out.setOlderId(tweets.get(tweets.size() - 1).getId()); if (saveNotifications) { setValue("new_tweets_count", getInt("new_tweets_count") + tweets.size()); save(); } Log.d(Utils.TAG, tweets.size() + " mensajes nuevos en " + getString("name")); long fisrtId = 1; Cursor c = DataFramework.getInstance().getCursor("tweets", new String[] { DataFramework.KEY_ID }, null, null, null, null, DataFramework.KEY_ID + " desc", "1"); if (!c.moveToFirst()) { c.close(); fisrtId = 1; } else { long Id = c.getInt(0) + 1; c.close(); fisrtId = Id; } for (int i = tweets.size() - 1; i >= 0; i--) { /*String sql = "INSERT INTO 'tweets' (" + DataFramework.KEY_ID + ", search_id, url_avatar, username, user_id, tweet_id," + "text, source, to_username, to_user_id, date, favorite) VALUES (" + fisrtId + "," + getId() + ",'" +tweets.get(i).getProfileImageUrl() + "','"+tweets.get(i).getFromUser()+"','" + tweets.get(i).getFromUserId() + "','" + tweets.get(i).getId() + "','" + tweets.get(i).getText() + "','" + tweets.get(i).getSource() + "','"+tweets.get(i).getToUser() +"','"+tweets.get(i).getToUserId()+"','"+String.valueOf(tweets.get(i).getCreatedAt().getTime()) + "',0);\n";*/ User u = tweets.get(i).getUser(); ContentValues args = new ContentValues(); args.put(DataFramework.KEY_ID, "" + fisrtId); args.put("search_id", "" + getId()); if (u.getProfileImageURL() != null) { args.put("url_avatar", u.getProfileImageURL().toString()); } else { args.put("url_avatar", ""); } args.put("username", u.getScreenName()); args.put("fullname", u.getName()); args.put("user_id", "" + u.getId()); args.put("tweet_id", Utils.fillZeros("" + tweets.get(i).getId())); args.put("text", tweets.get(i).getText()); args.put("source", tweets.get(i).getSource()); args.put("to_username", tweets.get(i).getInReplyToScreenName()); args.put("to_user_id", "" + tweets.get(i).getInReplyToUserId()); args.put("date", String.valueOf(tweets.get(i).getCreatedAt().getTime())); if (tweets.get(i).getGeoLocation() != null) { args.put("latitude", tweets.get(i).getGeoLocation().getLatitude()); args.put("longitude", tweets.get(i).getGeoLocation().getLongitude()); } args.put("favorite", "0"); DataFramework.getInstance().getDB().insert("tweets", null, args); fisrtId++; } if (saveNotifications) { setValue("last_tweet_id_notifications", tweets.get(0).getId() + ""); save(); } int total = nResult + tweets.size(); if (total > Utils.MAX_ROW_BYSEARCH) { Log.d(Utils.TAG, "Limpiando base de datos"); String date = DataFramework.getInstance() .getEntityList("tweets", "favorite=0 and search_id=" + getId(), "date desc") .get(Utils.MAX_ROW_BYSEARCH).getString("date"); String sqldelete = "DELETE FROM tweets WHERE favorite=0 AND search_id=" + getId() + " AND date < '" + date + "'"; DataFramework.getInstance().getDB().execSQL(sqldelete); } } } catch (TwitterException e) { e.printStackTrace(); RateLimitStatus rate = e.getRateLimitStatus(); if (rate != null) { out.setError(Utils.LIMIT_ERROR); out.setRate(rate); } else { out.setError(Utils.UNKNOWN_ERROR); } } catch (Exception e) { e.printStackTrace(); out.setError(Utils.UNKNOWN_ERROR); } return out; }
From source file:com.javielinux.database.EntitySearch.java
License:Apache License
public Query getQuery(Context cnt) { String q = this.getString("words_and"); if (!this.getString("words_or").equals("")) { q += Utils.getQuotedText(this.getString("words_or"), "OR ", false); }//ww w . j a va2 s.co m if (!this.getString("words_not").equals("")) { q += Utils.getQuotedText(this.getString("words_not"), "-", true); } if (!this.getString("from_user").equals("")) { q += " from:" + this.getString("from_user"); } if (!this.getString("to_user").equals("")) { q += " to:" + this.getString("to_user"); } if (!this.getString("source").equals("")) { q += " source:" + this.getString("source"); } if (this.getInt("attitude") == 1) q += " :)"; if (this.getInt("attitude") == 2) q += " :("; String modLinks = "filter:links"; String websVideos = "twitvid OR youtube OR vimeo OR youtu.be"; String webPhotos = "lightbox.com OR mytubo.net OR imgur.com OR instagr.am OR twitpic OR yfrog OR plixi OR twitgoo OR img.ly OR picplz OR lockerz"; if (this.getInt("filter") == 1) q += " " + modLinks; if (this.getInt("filter") == 2) q += " " + webPhotos + " " + modLinks; if (this.getInt("filter") == 3) q += " " + websVideos + " " + modLinks; if (this.getInt("filter") == 4) q += " " + websVideos + " OR " + webPhotos + " " + modLinks; if (this.getInt("filter") == 5) q += " source:twitterfeed " + modLinks; if (this.getInt("filter") == 6) q += " ?"; if (this.getInt("filter") == 7) q += " market.android.com OR androidzoom.com OR androlib.com OR appbrain.com OR bubiloop.com OR yaam.mobi OR slideme.org " + modLinks; Log.d(Utils.TAG, "Buscando: " + q); Query query = new Query(q); if (this.getInt("use_geo") == 1) { if (this.getInt("type_geo") == 0) { // coordenadas del mapa GeoLocation gl = new GeoLocation(this.getDouble("latitude"), this.getDouble("longitude")); String unit = Query.KILOMETERS; if (this.getInt("type_distance") == 0) unit = Query.MILES; query.setGeoCode(gl, this.getDouble("distance"), unit); } if (this.getInt("type_geo") == 1) { // coordenadas del gps Location loc = LocationUtils.getLastLocation(cnt); if (loc != null) { GeoLocation gl = new GeoLocation(loc.getLatitude(), loc.getLongitude()); String unit = Query.KILOMETERS; if (this.getInt("type_distance") == 0) unit = Query.MILES; query.setGeoCode(gl, this.getDouble("distance"), unit); } else { mErrorLastQuery = cnt.getString(R.string.no_location); } } } PreferenceManager.setDefaultValues(cnt, R.xml.preferences, false); SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(cnt); int count = Integer.parseInt(preference.getString("prf_n_max_download", "60")); if (count <= 0) count = 60; query.setCount(count); String lang = ""; if (!this.getString("lang").equals("")) lang = this.getString("lang"); if (!lang.equals("all")) query.setLang(lang); // obtener desde donde quiero hacer la consulta if (getInt("notifications") == 1) { String where = "search_id = " + this.getId() + " AND favorite = 0"; int nResult = DataFramework.getInstance().getEntityListCount("tweets", where); if (nResult > 0) { long mLastIdNotification = DataFramework.getInstance().getTopEntity("tweets", where, "date desc") .getLong("tweet_id"); query.setSinceId(mLastIdNotification); } } //query.setResultType(Query.POPULAR); return query; }
From source file:com.twitter.TwitterCrawler.java
/** * * @return @throws TwitterException//from w ww . ja v a2 s. c o m * @throws InterruptedException returns the number of tweets */ public TwitterApiResponse stream() throws TwitterException, InterruptedException { //************************ Variables ************************* TwitterApiResponse response = new TwitterApiResponse(); long timeNow = System.currentTimeMillis(); long afterInterval = timeNow + (interval * 1000); int countTweets = 0; //define the tweet id that the application should read relative to the IDs of Tweets it has already processed long maxID = 0; ArrayList<Status> tweets = new ArrayList<Status>(); Query query = new Query(keywords); //************************ Action ************************* //max 450 calls in 15 mins -->30/min, 5 calls/10 secs while (timeNow < afterInterval) { try { if (sinceID != 0) { query.setSinceId(sinceID); } if (maxID != 0) { query.setMaxId(maxID); } query.setResultType(Query.ResultType.recent); query.setCount(100); QueryResult result = twitter.search(query); tweets.addAll(result.getTweets()); if (tweets.size() == 100) { countTweets += tweets.size(); maxID = tweets.get(tweets.size() - 1).getId() - 1; } else { countTweets += tweets.size(); break; } timeNow = System.currentTimeMillis(); } catch (TwitterException te) { System.out.println("Couldn't connect: " + te); } } sinceID = tweets.get(0).getId(); response.setCount(countTweets); response.setSinceID(sinceID); return response; }
From source file:DataCollections.TweetCollections_HashTags.java
public void collectTweetsFromHashtag_popterm(Hashtag_dbo hashtag) throws InterruptedException { long max_id = 0; boolean midused = false, sidused = false; if (hashtag.values[Hashtag_dbo.map.get("max_id")].used) { max_id = hashtag.values[Hashtag_dbo.map.get("")].lnumber; midused = true;/*from w ww.j a v a 2s . c o m*/ } long since_id = 0; if (hashtag.values[Hashtag_dbo.map.get("since_id")].used) { since_id = hashtag.values[Hashtag_dbo.map.get("since_id")].lnumber; sidused = true; } Query q = new Query(hashtag.values[Hashtag_dbo.map.get("hashtag_popterm")].string); //LogPrinter.printLog("Collection Tweets for hashtag_searchterm"+hashtag.values[Hashtag_dbo.map.get("hashtag_popterm")].string); q.setCount(100); if (midused) { q.setMaxId(max_id); } if (sidused) { q.setSinceId(since_id); } QueryResult result = null; try { result = searchres.search(q); } catch (Exception e) { LogPrinter.printLog("Tweet Search Resources Rate Limit reached "); if (e instanceof TwitterException) { } if (e instanceof InterruptedException) { //Thread.sleep(((TwitterException)e).getRetryAfter()*1000+5000); } } int count = 0; for (Status s : result.getTweets()) { Tweet_dbo tweet = thelper.convertStatusToTweet_dbo(s); String whereclause = "tweet_id = " + Long.toString(tweet.values[Tweet_dbo.map.get("tweet_id")].lnumber); tweet.values[Tweet_dbo.map.get("processed")].setValue("true"); tweet.values[Tweet_dbo.map.get("f_search")].setValue("true"); tweet.values[Tweet_dbo.map.get("searchterm")] .setValue(hashtag.values[Hashtag_dbo.map.get("hashtag_popterm")].string); if (TweetsTable.select(whereclause, 0, 2).length == 0) { //LogPrinter.printLog(" Inserting tweet "+count+tweet.values[Tweet_dbo.map.get("tweet_id")].lnumber); TweetsTable.insert(tweet); users_edgescollections.extract_InsertUsers_EdgesFromTweet(s); count++; } } }
From source file:it.greenvulcano.gvesb.social.twitter.directcall.TwitterOperationSearch.java
License:Open Source License
@Override public void execute(SocialAdapterAccount account) throws SocialAdapterException { try {//from w ww .j a va 2s.co m 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); } }