Exemple #1
0
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"