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
6565def 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