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()
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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