def set_mws_product_information(asins, response): """ Get product from MWS API. Then make a MWS Product API object (Papi). Then set lowest price, lowest fba price, and seller in *response*. param str asins: Amazon's unique identifier for listing param obj response: Response object for this search. """ if len(asins) > 10: sections = sectionize_into_lists(asins) else: sections = [asins] for section in sections: print('searching mws....') try: result = amazon_api.get_lowest_offer_listings_for_asin(section) pprint(result.parsed) except: # I need to deal more gracefully with errors in the request. # I should find out what asin triggered the error and remove it # and try again print('Unable to process {0}'.format(section)) continue papi = PAPI(result.parsed) papi.make_products() for asin in section: try: product = papi.products[asin] response.set_lowest_price_mws(asin, product.lowest_price) response.set_lowest_fba_price_mws(asin, product.lowest_fba_price) response.set_seller(asin, product.get_cheapest_seller()) except: #asin not in papi.products pass
def test_make_products(self): papi = PAPI(deepcopy(TEST_RESPONSE)) papi.make_products() self.assertTrue(papi.products["B00KUP84L2"]) self.assertTrue(papi.products["B00HEATHXK"]) self.assertTrue(papi.products["B00KURKYTK"]) self.assertTrue(len(papi.products) == 3) self.assertFalse(len(papi.products) == 4)
def test_lowest_prices(self): papi = PAPI(deepcopy(TEST_RESPONSE_SM)) papi.make_products() products = papi.products listings = products["B00M2ALI02"].listings lp, lfbap = papi.lowest_prices(listings) self.assertEqual(lp, 15.99) self.assertEqual(lfbap, 15.99)
def test_products(self): papi = PAPI(deepcopy(TEST_RESPONSE)) papi.make_products() ps = papi.get_products_from_response() offerings0 = papi.get_offerings_from_product(ps[0]) products = papi.products lp = products["B00KUP84L2"].lowest_price self.assertEqual(lp, 17.99)
def test_lowest_prices(self): papi = PAPI(deepcopy(TEST_RESPONSE_SM)) papi.make_products() products = papi.products listings = products['B00M2ALI02'].listings lp, lfbap = papi.lowest_prices(listings) self.assertEqual(lp, 15.99) self.assertEqual(lfbap, 15.99)
def test_products(self): papi = PAPI(deepcopy(TEST_RESPONSE)) papi.make_products() ps = papi.get_products_from_response() offerings0 = papi.get_offerings_from_product(ps[0]) products = papi.products lp = products['B00KUP84L2'].lowest_price self.assertEqual(lp, 17.99)
def test_make_products(self): papi = PAPI(deepcopy(TEST_RESPONSE)) papi.make_products() self.assertTrue(papi.products['B00KUP84L2']) self.assertTrue(papi.products['B00HEATHXK']) self.assertTrue(papi.products['B00KURKYTK']) self.assertTrue(len(papi.products) == 3) self.assertFalse(len(papi.products) == 4)
def set_mws_product_information(asins, response): """ Get product from MWS API. Then make a MWS Product API object (Papi). Then set lowest price, lowest fba price, and seller in *response*. param str asins: Amazon's unique identifier for listing param obj response: Response object for this search. """ if len(asins) > 10: sections = sectionize_into_lists(asins) else: sections = [asins] for section in sections: print('searching mws....') try: result = amazon_api.get_lowest_offer_listings_for_asin( section ) pprint(result.parsed) except: # I need to deal more gracefully with errors in the request. # I should find out what asin triggered the error and remove it # and try again print('Unable to process {0}'.format(section)) continue papi = PAPI(result.parsed) papi.make_products() for asin in section: try: product = papi.products[asin] response.set_lowest_price_mws(asin, product.lowest_price) response.set_lowest_fba_price_mws( asin, product.lowest_fba_price ) response.set_seller(asin, product.get_cheapest_seller()) except: #asin not in papi.products pass