def yelp(): search_params = make_param_tuple(request.args.get('thr'), request.args.get('order_by'), request.args.get('num_results'), request.args.get('page'), request.args.get('start_date'), request.args.get('end_date'), 100) yelp_reviews = get_yelp_sick_reviews(echo=False, search_params=search_params) ## Render template return render_template('review_table.html', reviewtype="Yelp", reviews=yelp_reviews, get_review_file=get_review_file, searchtype="yelp", searchparams=search_params)
def get_sick_business_dict(search_params): # Get all reviews with default settings -- 0.5 threshold, no limit yelp_reviews = get_yelp_sick_reviews(echo=False, search_params=search_params) # tweets = get_twitter_sick_reviews(echo=False, search_params=DEFAULT_SEARCH_PARAMS) # Now iterate through yelp reviews and add to dict of reviews indexed by business id business_reviews = {} for review in yelp_reviews: ## If Business in dict if (review.business.id in business_reviews): business_reviews[review.business.id].append(review) ## IF business not in dict else: business_reviews[review.business.id] = [review] # Tweets do not yet have support for businesses in db, so until then we can't use this # for review in tweets: # ## Business in dict already # if (review.business.id in business_reviews): # business_reviews[review.business.id].append(review) # ## Business not in dict # else: # business_reviews[review.business.id] = [review] ## convert to list of tuples so that businesses can be sorted by ## number of reviews business_tuples = [] for business in business_reviews: avg_score = 0 for review in business_reviews[business]: avg_score += float(review.score) avg_score = (1.0 * avg_score) / len(business_reviews[business]) ##tuple format: (businessid, reviews_list, num_reviews, avg score) business_tuples.append((business_reviews[business][0].business, business_reviews[business], len(business_reviews[business]), avg_score)) # Sort businesses by number of reviews business_tuples.sort(key=lambda t: t[2], reverse=True) return business_tuples