From fa8b1db55bab45cb5d11715e489fca4669bc3712 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Fri, 27 Oct 2023 15:57:21 -0600 Subject: [PATCH 1/3] add number of products to product finder --- src/keepa/interface.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/keepa/interface.py b/src/keepa/interface.py index 78f8c38..78bef19 100644 --- a/src/keepa/interface.py +++ b/src/keepa/interface.py @@ -1333,7 +1333,7 @@ def seller_query( response = self._request("seller", payload, wait=wait) return _parse_seller(response["sellers"], to_datetime) - def product_finder(self, product_parms, domain="US", wait=True) -> list: + def product_finder(self, product_parms, domain="US", wait=True, n_products=50) -> list: """Query the keepa product database to find products matching criteria. Almost all product fields can be searched for and sort. @@ -2356,6 +2356,9 @@ def product_finder(self, product_parms, domain="US", wait=True) -> list: wait : bool, default: True Wait available token before doing effective query. + n_products : int, default 50 + Maximum number of matching products returned by keepa. + Returns ------- list @@ -2369,8 +2372,8 @@ def product_finder(self, product_parms, domain="US", wait=True) -> list: Examples -------- - Query for all of Jim Butcher's books using the synchronous - ``keepa.Keepa`` class. Sort by current sales + Query for the first 100 of Jim Butcher's books using the synchronous + ``keepa.Keepa`` class. Sort by current sales. >>> import keepa >>> api = keepa.Keepa('') @@ -2378,8 +2381,7 @@ def product_finder(self, product_parms, domain="US", wait=True) -> list: ... 'author': 'jim butcher', ... 'sort': ["current_SALES", "asc"], ... } - - >>> asins = api.product_finder(product_parms) + >>> asins = api.product_finder(product_parms, n_products=100) >>> asins ['B000HRMAR2', '0578799790', @@ -2419,6 +2421,7 @@ def product_finder(self, product_parms, domain="US", wait=True) -> list: # verify json type key_type = PRODUCT_REQUEST_KEYS[key] product_parms[key] = key_type(product_parms[key]) + product_parms['perPage'] = n_products payload = { "key": self.accesskey, From e0f941796e149c9b5f441e80c44618ddc9b7a813 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Fri, 27 Oct 2023 16:00:10 -0600 Subject: [PATCH 2/3] do not add key each time --- src/keepa/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/keepa/interface.py b/src/keepa/interface.py index 78bef19..6734260 100644 --- a/src/keepa/interface.py +++ b/src/keepa/interface.py @@ -2421,7 +2421,7 @@ def product_finder(self, product_parms, domain="US", wait=True, n_products=50) - # verify json type key_type = PRODUCT_REQUEST_KEYS[key] product_parms[key] = key_type(product_parms[key]) - product_parms['perPage'] = n_products + product_parms['perPage'] = n_products payload = { "key": self.accesskey, From 13290494c6201cd44d2157988911a6343f0733b2 Mon Sep 17 00:00:00 2001 From: Alex Kaszynski Date: Fri, 27 Oct 2023 16:09:19 -0600 Subject: [PATCH 3/3] use dictionary merge instead --- src/keepa/interface.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/keepa/interface.py b/src/keepa/interface.py index 6734260..fddee35 100644 --- a/src/keepa/interface.py +++ b/src/keepa/interface.py @@ -2421,12 +2421,11 @@ def product_finder(self, product_parms, domain="US", wait=True, n_products=50) - # verify json type key_type = PRODUCT_REQUEST_KEYS[key] product_parms[key] = key_type(product_parms[key]) - product_parms['perPage'] = n_products payload = { "key": self.accesskey, "domain": DCODES.index(domain), - "selection": json.dumps(product_parms), + "selection": json.dumps({**product_parms, **{'perPage': n_products}}), } response = self._request("query", payload, wait=wait)