File tree Expand file tree Collapse file tree 3 files changed +15
-12
lines changed
Expand file tree Collapse file tree 3 files changed +15
-12
lines changed Original file line number Diff line number Diff line change 1313from .helpers import arguments
1414from .helpers import requests
1515from .helpers .generators import get_list_chunks
16- from .helpers .items import get_items_including_unavailable
16+ from .helpers .items import sort_items
1717
1818
1919class AmazonApi :
@@ -97,16 +97,13 @@ def get_items(
9797 items_ids = arguments .get_items_ids (items )
9898 results = []
9999
100- for asin_chunk in get_list_chunks (items_ids , chunk_size = 10 ):
100+ for asin_chunk in get_list_chunks (list ( set ( items_ids )) , chunk_size = 10 ):
101101 request = requests .get_items_request (self , asin_chunk , ** kwargs )
102102 self ._throttle ()
103103 items_response = requests .get_items_response (self , request )
104104 results .extend (items_response )
105105
106- if include_unavailable :
107- results = get_items_including_unavailable (results , items_ids )
108-
109- return results
106+ return sort_items (results , items_ids , include_unavailable )
110107
111108
112109 def search_items (
Original file line number Diff line number Diff line change @@ -18,7 +18,7 @@ def get_items_ids(items: Union[str, List[str]]) -> List[str]:
1818 items_ids = [get_asin (x .strip ()) for x in items ]
1919
2020 if items_ids :
21- return list ( set ( items_ids ))
21+ return items_ids
2222
2323 raise AsinNotFoundException ('No ASIN codes have been found.' )
2424
Original file line number Diff line number Diff line change 44from .. import models
55
66
7- def get_items_including_unavailable (items : List [models .Item ], items_ids : List [str ]) -> List [models .Item ]:
8- for index , asin in enumerate (items_ids ):
9- if items [index ].asin != asin :
10- items .insert (index , models .Item (asin = asin ))
11- return items
7+ def sort_items (items : List [models .Item ], items_ids : List [str ], include_unavailable : bool ) -> List [models .Item ]:
8+ sorted_items = []
9+
10+ for asin in items_ids :
11+ matches = list (filter (lambda item , asin = asin : item .asin == asin , items ))
12+ if matches :
13+ sorted_items .append (matches [0 ])
14+ elif include_unavailable :
15+ sorted_items .append (models .Item (asin = asin ))
16+
17+ return sorted_items
You can’t perform that action at this time.
0 commit comments