def get_shop_top_terms(shop, etsy_api, term_limit=5, min_request_duration=0): """Extract the most popular terms for a single shop shop (dict): etsy shop definition etsy_api (EtsyAPI): Etsy API client instance term_limit (int): number of top terms to display """ offset = 0 texts = [] while True: start_time = time.time() listings = etsy_api.get_shop_listings(shop["shop_id"], limit=100, offset=offset) for listing in listings["results"]: texts.extend([listing["title"], listing["description"]]) if not listings["pagination"]["next_page"]: break offset += 100 duration = time() - start_time if duration < min_request_duration: sleep(min_request_duration - duration) terms = rank_terms(texts) if terms is None: return top_terms = '' for i in xrange(min(len(terms), term_limit)): top_terms += str(i + 1) + "-" + terms[i][0] + " " print "shop id %s: %s" % (shop["shop_id"], top_terms)
def test_rank_terms(self): moby_dick = gutenberg.sents("melville-moby_dick.txt") terms = rank_terms([" ".join(s) for s in moby_dick[:500]]) assert type(terms[0][0]) == unicode assert type(terms[0][1]) == int assert terms[0][0] == "whale"