From 8a5cb3ee1b6bee665deb7a03583403fc555e4b70 Mon Sep 17 00:00:00 2001 From: hqtoan94 Date: Thu, 20 Apr 2017 14:04:13 +0700 Subject: [PATCH 1/7] Update api.py --- amazon/api.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/amazon/api.py b/amazon/api.py index f779e2d..90f7004 100644 --- a/amazon/api.py +++ b/amazon/api.py @@ -1379,6 +1379,14 @@ def detail_page_url(self): """ return self._safe_get_element_text('DetailPageURL') + @property + def number_sellers(self): + """Number of offers - New. + + :return: + Number of offers - New (string)\ + """ + return self._safe_get_element_text('OfferSummary.TotalNew') class AmazonCart(LXMLWrapper): """Wrapper around Amazon shopping cart. From a85b4e0baaadc487a0714c4ea23dbfe051675753 Mon Sep 17 00:00:00 2001 From: hqtoan94 Date: Wed, 21 Jun 2017 16:18:52 +0700 Subject: [PATCH 2/7] Add UPCs property Using upcs property to get list UPC of amz item --- amazon/api.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/amazon/api.py b/amazon/api.py index 90f7004..2264085 100644 --- a/amazon/api.py +++ b/amazon/api.py @@ -994,6 +994,22 @@ def upc(self): upc = self._safe_get_element_text( 'UPCListElement', root=upc_list[0]) return upc + + @property + def upcs(self): + """UPCs. + + :return: + UPCs ([string]) + """ + upcs = None + + upc_list = self._safe_get_element_text('ItemAttributes.UPCList') + if upc_list: + upcs = [self._safe_get_element_text( + 'UPCListElement', root=upc) for upc in upc_list] + + return upcs @property def color(self): From badebc5232598bf45e91910cf227fce220f128c2 Mon Sep 17 00:00:00 2001 From: hqtoan94 Date: Wed, 21 Jun 2017 16:26:03 +0700 Subject: [PATCH 3/7] Add EANs property Method using to get list of EAN from amazon --- amazon/api.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/amazon/api.py b/amazon/api.py index 2264085..6d35255 100644 --- a/amazon/api.py +++ b/amazon/api.py @@ -979,6 +979,22 @@ def ean(self): ean = self._safe_get_element_text( 'EANListElement', root=ean_list[0]) return ean + + @property + def eans(self): + """EANs. + + :return: + EANs ([string]) + """ + eans = None + + ean_list = self._safe_get_element_text('ItemAttributes.EANList') + if ean_list: + eans = [self._safe_get_element_text( + 'EANListElement', root=ean) for ean in ean_list] + + return eans @property def upc(self): From bb2f66a0ad0ce3f7cba0419c3500d5315da9016a Mon Sep 17 00:00:00 2001 From: hqtoan94 Date: Thu, 22 Jun 2017 11:25:49 +0700 Subject: [PATCH 4/7] Refactor the code to get list UPC and EAN --- amazon/api.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/amazon/api.py b/amazon/api.py index 6d35255..ca24e49 100644 --- a/amazon/api.py +++ b/amazon/api.py @@ -987,12 +987,12 @@ def eans(self): :return: EANs ([string]) """ - eans = None - - ean_list = self._safe_get_element_text('ItemAttributes.EANList') - if ean_list: - eans = [self._safe_get_element_text( - 'EANListElement', root=ean) for ean in ean_list] + + ean_list = self._safe_get_element('ItemAttributes.EANList.EANListElement') + if len(ean_list) > 0: + eans = [ean.text for ean in ean_list] + else: + eans = [] return eans @@ -1003,6 +1003,7 @@ def upc(self): :return: UPC (string) """ + print("A") upc = self._safe_get_element_text('ItemAttributes.UPC') if upc is None: upc_list = self._safe_get_element_text('ItemAttributes.UPCList') @@ -1018,12 +1019,12 @@ def upcs(self): :return: UPCs ([string]) """ - upcs = None - upc_list = self._safe_get_element_text('ItemAttributes.UPCList') - if upc_list: - upcs = [self._safe_get_element_text( - 'UPCListElement', root=upc) for upc in upc_list] + upc_list = self._safe_get_element('ItemAttributes.UPCList.UPCListElement') + if len(upc_list) > 0: + upcs = [upc.text for upc in upc_list] + else: + upcs = [] return upcs From 2a76e018fd97cae9e10b7f27edf93b9a15a707ec Mon Sep 17 00:00:00 2001 From: hqtoan94 Date: Thu, 22 Jun 2017 14:13:46 +0700 Subject: [PATCH 5/7] Fixing bug TypeError Check valid data first and then check length of a list --- amazon/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/amazon/api.py b/amazon/api.py index 4c9e9ef..c647040 100644 --- a/amazon/api.py +++ b/amazon/api.py @@ -991,7 +991,7 @@ def eans(self): """ ean_list = self._safe_get_element('ItemAttributes.EANList.EANListElement') - if len(ean_list) > 0: + if ean_list and len(ean_list) > 0: eans = [ean.text for ean in ean_list] else: eans = [] @@ -1023,7 +1023,7 @@ def upcs(self): """ upc_list = self._safe_get_element('ItemAttributes.UPCList.UPCListElement') - if len(upc_list) > 0: + if upc_list and len(upc_list) > 0: upcs = [upc.text for upc in upc_list] else: upcs = [] From e0b3abb6588588d3c98c97607a266d628f55010b Mon Sep 17 00:00:00 2001 From: hqtoan94 Date: Thu, 22 Jun 2017 14:15:45 +0700 Subject: [PATCH 6/7] Update api.py Check valid data first and then check length of a list --- amazon/api.py | 1 - 1 file changed, 1 deletion(-) diff --git a/amazon/api.py b/amazon/api.py index c647040..ca673e7 100644 --- a/amazon/api.py +++ b/amazon/api.py @@ -1005,7 +1005,6 @@ def upc(self): :return: UPC (string) """ - print("A") upc = self._safe_get_element_text('ItemAttributes.UPC') if upc is None: upc_list = self._safe_get_element_text('ItemAttributes.UPCList') From be4b01a2bae40283d276af1f149ccf626bc6030c Mon Sep 17 00:00:00 2001 From: Ho Quoc Toan Date: Sat, 31 Mar 2018 07:02:59 +0700 Subject: [PATCH 7/7] Add relevant tests for UPCs and EANs fields --- tests.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests.py b/tests.py index d8b7c69..2f6926d 100644 --- a/tests.py +++ b/tests.py @@ -113,6 +113,8 @@ def test_lookup(self): product = self.amazon.lookup(ItemId="B00ZV9PXP2") assert_true('Kindle' in product.title) assert_equals(product.ean, '0848719083774') + assert_true(len(product.eans) > 0) + assert_true(len(product.upcs) >= 0) assert_equals( product.large_image_url, 'https://images-na.ssl-images-amazon.com/images/I/51hrdzXLUHL.jpg'