From 7af581179260391e20ed71cf37be017e456eeb46 Mon Sep 17 00:00:00 2001 From: spbeach46 Date: Fri, 25 Dec 2020 12:15:20 -0700 Subject: [PATCH] added lambda function to multithreader in FindingApi method --- ebay_api.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/ebay_api.py b/ebay_api.py index d7e1e5d..f789565 100644 --- a/ebay_api.py +++ b/ebay_api.py @@ -16,17 +16,13 @@ class FindingApi: # departments = ["3034","93427"] (womens and mens) - def get_data(self, i): # TODO your going to have to use nested functions of lambda functions here somewhere + def get_data(self, category_id, i): # TODO you're going to have to use nested functions of lambda functions here somewhere ''' Gets raw JSON data fom FindingApi service call Currently being used to get itemIDs from categories ''' - with open('cat_list.txt') as jf: - cat_list = json.load(jf) - for category_id in cat_list: - params = { "OPERATION-NAME":self.service, "SECURITY-APPNAME":"scottbea-xlister-PRD-6796e0ff6-14862949", @@ -36,26 +32,31 @@ class FindingApi: "paginationInput.entriesPerPage":"100", "paginationInput.PageNumber":i } + response = requests.get("https://svcs.ebay.com/services/search/FindingService/v1", - params=params) + params=params) + data = response.json() return data + def get_ids_from_cats(self): ''' Creates a 20-itemId list to use for the ShoppingApi call ''' - with open('cat_list.txt') as jf: - cat_list = json.load(jf) - pages = self.pageNumber itemid_results_list = [] -# TODO instead of running through multiple try except loops try to implement set methods for efficiency and ease. Remember symmetric_difference, difference, intersection, set() + with open('cat_list.txt') as jf: + cat_list = json.load(jf) + for category_id in cat_list: + + args = [(category_id, i) for i in pages] + with concurrent.futures.ThreadPoolExecutor() as executor: - for future in executor.map(self.get_data, pages): + for future in executor.map(lambda p: self.get_data(*p), args): data = future try: @@ -69,11 +70,13 @@ class FindingApi: if item not in itemid_results_list: itemid_results_list.append(item['itemId'][0]) - item_id_results = [','.join(itemid_results_list[n:n+20]) for n in list(range(0, - len(itemid_results_list), 20))] - + item_id_results = [','.join(itemid_results_list[n:n+20]) for n in list(range(0, + len(itemid_results_list), 20))] return item_id_results +## TODO instead of running through multiple try except loops try to implement set methods for efficiency and ease. Remember symmetric_difference, difference, intersection, set() +# for category_id in cat_list: + class ShoppingApi: ''' Creates objects from ShoppingApi service calls that can interact with