def post(self): query = self.request.get("query") source = self.request.get("source") tweets = None index = -1 recordlist = list() if Records.searchKeyListContains(query): Records.updateSearchKeyPosition(query) recordlist.extend(Records.getRecordsTimeListFor(query)) else: Records.addSearchKey(query) Records.updateTweetbase() if source == "search-bar" or source == "history-bar-home": twitter_handler = TwitterHandler(query) tweets = twitter_handler.retrieveData() #write code for error condition else: index = int(self.request.get("index")) tweets = Records.getRecordsByIndexFor(query, index) template_values = { "query" : query, "records": recordlist, "disable": index, "tweets" : reversed(tweets), "t_count": len(tweets) } template = JINJA_ENVIRONMENT.get_template("tweetspage.html") self.response.write(template.render(template_values))
def updateTweetbase(cls): search_key = ndb.Key("search_query_list", SEARCH_QUERY_LIST_NAME) searches = SearchKey.getsearchlist(search_key).fetch(MAX_SEARCH_LIST_SIZE) for search in searches: if search.next_search_time <= datetime.now(): #we update the search record new_record_key = ndb.Key("search_query_list", SEARCH_QUERY_LIST_NAME, "record_list", RECORD_KEY_PREFIX + normalize(search.search_query)) record = SearchRecord.getsearchrecord(new_record_key).get() since_id = long(-1) for record_s in reversed(record.search_result): if len(record_s.search_result) > 0 : since_id = long(record_s.search_result[0]["tweet_id"]) break twitter_handler = TwitterHandler(search.search_query, since_id) tweets = twitter_handler.retrieveData(MAX_TWEETS_IN_A_SEARCH) if record.num_of_result == 0: record.search_result = [SearchResult(search_result = tweets)] else: record.search_result.append(SearchResult(search_result = tweets)) record.num_of_result += 1 record.put() #we update the list of searches search.next_search_time = search.next_search_time + timedelta(minutes = SEARCH_REPEAT_TIME_MINS) search.put()
def post_hit(hit_id): global twitter_handler if not twitter_handler: twitter_handler = TwitterHandler() if twitter_handler.post_hit(get_hit(hit_id)): set_hit_status(hit_id, HIT_STATUS_POSTED) # keep track of most recent post: cursor = hitsdb.cursor() cursor.execute("INSERT INTO hitinfo VALUES (?)", (str(time.time()),)) hitsdb.commit() return True else: set_hit_status(hit_id, HIT_STATUS_FAILED) return False
def post_hit(hit_id): global twitter_handler if not twitter_handler: twitter_handler = TwitterHandler() if twitter_handler.post_hit(get_hit(hit_id)): set_hit_status(hit_id, HIT_STATUS_POSTED) # keep track of most recent post: cursor = hitsdb.cursor() cursor.execute("INSERT INTO hitinfo VALUES (?)", (str(time.time()), )) hitsdb.commit() return True else: set_hit_status(hit_id, HIT_STATUS_FAILED) return False
def _fetch_hit_tweets(hit): """ attempts to fetch tweets in hit. if successful builds up more detailed hit object. returns the input hit unchaged on failure """ global twitter_handler if not twitter_handler: twitter_handler = TwitterHandler() t1 = twitter_handler.fetch_tweet(hit['tweet_one']['tweet_id']) t2 = twitter_handler.fetch_tweet(hit['tweet_two']['tweet_id']) if t1 and t2: hit['tweet_one']['fetched'] = _cleaned_tweet(t1) hit['tweet_two']['fetched'] = _cleaned_tweet(t2) return hit