Skip to content

Commit 1f86563

Browse files
committed
Finished with images parser
1 parent 376317e commit 1f86563

1 file changed

Lines changed: 71 additions & 35 deletions

File tree

amazon/paapi.py

Lines changed: 71 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
}
4444

4545

46-
class Product:
46+
class Class:
4747
"""Base class for creating the product instance."""
4848

4949

@@ -63,7 +63,7 @@ def get_asin(url):
6363

6464

6565
def parse_product(item):
66-
product = Product()
66+
product = Class()
6767
product.raw_info = item
6868

6969
# Main
@@ -78,9 +78,14 @@ def parse_product(item):
7878
product.title = None
7979

8080
# Info
81-
product.info = Product()
81+
product.info = Class()
8282
try:
83-
product.info.contributors = item.item_info.by_line_info.contributors
83+
product.info.contributors = []
84+
for x in item.item_info.by_line_info.contributors:
85+
contributor = Class()
86+
contributor.name = x.name
87+
contributor.role = x.role
88+
product.info.contributors.append(contributor)
8489
except Exception:
8590
product.info.contributors = None
8691
try:
@@ -131,7 +136,7 @@ def parse_product(item):
131136
product.info.release_date = item.item_info.product_info.release_date.display_value
132137
except Exception:
133138
product.info.release_date = None
134-
product.info.external_ids = Product()
139+
product.info.external_ids = Class()
135140
try:
136141
product.info.external_ids.ean = item.item_info.external_ids.ea_ns.display_values
137142
except Exception:
@@ -146,15 +151,15 @@ def parse_product(item):
146151
product.info.external_ids.upc = None
147152

148153
# Product
149-
product.product = Product()
154+
product.product = Class()
150155
try:
151156
product.product.features = item.item_info.features.display_values
152157
except Exception:
153158
product.product.features = None
154159
try:
155160
product.product.languages = []
156161
for x in item.item_info.content_info.languages.display_values:
157-
product.product.languages.append(x.display_value)
162+
product.product.languages.append(x.display_value + ' ' + x.type)
158163
except Exception:
159164
product.product.languages = None
160165
try:
@@ -173,12 +178,12 @@ def parse_product(item):
173178
product.product.unit_count = item.item_info.product_info.unit_count.display_value
174179
except Exception:
175180
product.product.unit_count = None
176-
product.product.dimensions = Product()
181+
product.product.dimensions = Class()
177182
try:
178-
product.product.dimensions.size = item.item_info.product_info.size.display_value
183+
product.product.size = item.item_info.product_info.size.display_value
179184
except Exception:
180-
product.product.dimensions.size = None
181-
product.product.dimensions.height = Product()
185+
product.product.size = None
186+
product.product.dimensions.height = Class()
182187
try:
183188
product.product.dimensions.height.value = item.item_info.product_info.item_dimensions.height.display_value
184189
except Exception:
@@ -187,7 +192,7 @@ def parse_product(item):
187192
product.product.dimensions.height.unit = item.item_info.product_info.item_dimensions.height.unit
188193
except Exception:
189194
product.product.dimensions.height.unit = None
190-
product.product.dimensions.lenght = Product()
195+
product.product.dimensions.lenght = Class()
191196
try:
192197
product.product.dimensions.lenght.value = item.item_info.product_info.item_dimensions.lenght.display_value
193198
except Exception:
@@ -196,7 +201,7 @@ def parse_product(item):
196201
product.product.dimensions.lenght.unit = item.item_info.product_info.item_dimensions.lenght.unit
197202
except Exception:
198203
product.product.dimensions.lenght.unit = None
199-
product.product.dimensions.width = Product()
204+
product.product.dimensions.width = Class()
200205
try:
201206
product.product.dimensions.width.value = item.item_info.product_info.item_dimensions.width.display_value
202207
except Exception:
@@ -205,7 +210,7 @@ def parse_product(item):
205210
product.product.dimensions.width.unit = item.item_info.product_info.item_dimensions.width.unit
206211
except Exception:
207212
product.product.dimensions.width.unit = None
208-
product.product.weight = Product()
213+
product.product.weight = Class()
209214
try:
210215
product.product.weight.value = item.item_info.product_info.item_dimensions.weight.display_value
211216
except Exception:
@@ -215,39 +220,70 @@ def parse_product(item):
215220
except Exception:
216221
product.product.weight.unit = None
217222

218-
# Parse Images data
223+
# Images
224+
product.images = Class()
219225
try:
220-
images = item.images
226+
product.images.large = item.images.primary.large.url
221227
except Exception:
222-
images = None
228+
product.images.large = None
223229
try:
224-
product.image_large = images.primary.large.url.replace('.jpg',
225-
'._AC_.jpg')
230+
product.images.medium = item.images.primary.medium.url
226231
except Exception:
227-
product.image_large = None
232+
product.images.medium = None
228233
try:
229-
product.image_medium = images.primary.medium.url.replace('_SL', '_AC')
234+
product.images.small = item.images.primary.small.url
230235
except Exception:
231-
product.image_medium = None
236+
product.images.small = None
232237
try:
233-
product.image_small = images.primary.small.url.replace('_SL', '_AC')
234-
except Exception:
235-
product.image_small = None
236-
try:
237-
product.image_variants = []
238-
for variant in images.variants:
238+
product.images.variants = Class()
239+
product.images.variants.small = []
240+
product.images.variants.medium = []
241+
product.images.variants.large = []
242+
for variant in item.images.variants:
239243
try:
240-
product.image_variants.append(
241-
variant.large.url.replace('.jpg', '._AC_.jpg'))
244+
product.images.variants.large.append(variant.large.url)
245+
product.images.variants.medium.append(variant.medium.url)
246+
product.images.variants.small.append(variant.small.url)
242247
except Exception:
243248
pass
244-
if not product.image_variants:
245-
product.image_variants = None
249+
if not product.images.variants.small and not product.images.variants.medium and not product.images.variants.large:
250+
product.images.variants = None
251+
except Exception:
252+
product.images.variants = None
253+
product.images.cropped = Class()
254+
product.images.cropped.small = []
255+
product.images.cropped.medium = []
256+
product.images.cropped.large = []
257+
try:
258+
product.images.cropped.small.append(product.images.small.replace('_SL', '_AC'))
259+
except Exception:
260+
pass
261+
try:
262+
product.images.cropped.medium.append(product.images.medium.replace('_SL', '_AC'))
246263
except Exception:
247-
product.image_variants = None
264+
pass
265+
try:
266+
product.images.cropped.large.append(product.images.large.replace('.jpg', '._AC_.jpg'))
267+
except Exception:
268+
pass
269+
for x in product.images.variants.small:
270+
try:
271+
product.images.cropped.small.append(x.replace('_SL', '_AC'))
272+
except Exception:
273+
pass
274+
for x in product.images.variants.medium:
275+
try:
276+
product.images.cropped.medium.append(x.replace('_SL', '_AC'))
277+
except Exception:
278+
pass
279+
for x in product.images.variants.large:
280+
try:
281+
product.images.cropped.large.append(x.replace('.jpg', '._AC_.jpg'))
282+
except Exception:
283+
pass
248284

249285
# Parse Offers Listings data
250-
product.prices = Product()
286+
product.prices = Class()
251287
try:
252288
listings = item.offers.listings[0]
253289
except Exception:
@@ -270,7 +306,7 @@ def parse_product(item):
270306
product.prices.currency = None
271307

272308
# Parse Offers Summaries data
273-
product.offers = Product()
309+
product.offers = Class()
274310
try:
275311
product.offers = item.offers.summaries
276312
except Exception:

0 commit comments

Comments
 (0)