def find_related_searches(searchword): api = Shopping(appid=Ebay.KARL_ID, config_file=None) mySearch = { "MaxKeywords": 10, "QueryKeywords": searchword, } api.execute('FindPopularSearches', mySearch) return (api.response_json())
def getItemDetails(itemId): # initialise eBay Shopping API api2 = Shopping(appid='INSERT_APP_ID') # get auction item including textual description and item specific information api2.execute('GetSingleItem', { 'ItemID': str(itemId), 'IncludeSelector': 'TextDescription,ItemSpecifics' }) response = json.loads(api2.response_json()) # check if all desired text fields are available if set(('Description','PictureURL','ConditionDisplayName','ConvertedCurrentPrice','PrimaryCategoryName','Title')).issubset(response['Item'].keys()): # collect the data if 'value' in response['Item']['Description'].keys(): description = unicodedata.normalize('NFKD', response['Item']['Description']['value']).encode('ascii','ignore') else: description = '' pictures = response['Item']['PictureURL'] condition = str(response['Item']['ConditionDisplayName']['value']) price = float(response['Item']['ConvertedCurrentPrice']['value']) category = str(response['Item']['PrimaryCategoryName']['value']) title = str(response['Item']['Title']['value']) # return the item only if the auction has a description longer than 100 characters and more than 2 images if (len(description) >= 100) & (len(pictures) > 2) & (len(condition) > 0) & (price != 0): pictures_list = list() for y in range(0,len(pictures)): pictures_list.append(str(pictures[y]['value'])) item_list = list() item_list.append(title) item_list.append(description) item_list.append(category) item_list.append(condition) item_list.append(price) item_list.append(pictures_list) return item_list return 'null'
def getItemDetails(item, nbr): itemId = item['itemId']['value'] # initialise eBay Shopping API api2 = Shopping(appid='INSERT_APP_ID') try: # get item details api2.execute('GetSingleItem', { 'ItemID': str(itemId), 'IncludeSelector': 'TextDescription,ItemSpecifics,Details,Variations' }) response = json.loads(api2.response_json()) except ConnectionError: return 'null' fields = set(('Description','PictureURL','ConditionDisplayName','ConvertedCurrentPrice','PrimaryCategoryName','Title','ItemSpecifics','Seller','StartTime','EndTime','HandlingTime','GlobalShipping','ReturnPolicy','Quantity')) pure_auction = (item['listingInfo']['bestOfferEnabled']['value'] == 'false') & (item['listingInfo']['buyItNowAvailable']['value'] == 'false') # check if all needed fields are available if fields.issubset(response['Item'].keys()) & pure_auction: # collect the data (features) if 'value' in response['Item']['Description'].keys(): description = unicodedata.normalize('NFKD', response['Item']['Description']['value']).encode('ascii','ignore') else: description = '' pictures = response['Item']['PictureURL'] condition = convertConditionToNumber(response['Item']['ConditionDisplayName']['value']) price = float(response['Item']['ConvertedCurrentPrice']['value']) category = str(response['Item']['PrimaryCategoryName']['value']) title = str(unicodedata.normalize('NFKD', response['Item']['Title']['value']).encode('ascii','ignore')) if ((title.lower().find('lot') >= 0) | (title.lower().find('set') >= 0) | (title.lower().find('pack') >= 0)): return 'null' model = -1 specifics = response['Item']['ItemSpecifics']['NameValueList'] seller_rating = float(response['Item']['Seller']['PositiveFeedbackPercent']['value']) seller_rating_count = convertRatingStarToNumber(response['Item']['Seller']['FeedbackRatingStar']['value']) start_time = dateutil.parser.parse(response['Item']['StartTime']['value']) end_time = dateutil.parser.parse(response['Item']['EndTime']['value']) end_weekday = end_time.isoweekday() start_weekday = start_time.isoweekday() end_hour = end_time.hour if (start_time.hour == end_time.hour) & (start_time.minute == end_time.minute) & (start_time.second == end_time.second): duration = (end_time - start_time).days else: duration = 0 shipping_locations = convertShipToLocationsToNumber(item['shippingInfo']['shipToLocations']) shipping_type = convertShippingTypeToNumber(str(item['shippingInfo']['shippingType']['value'])) handling_time = int(response['Item']['HandlingTime']['value']) global_shipping = 0 if str(response['Item']['GlobalShipping']['value']) == 'true': global_shipping = 1 nbr_of_pictures = len(pictures) len_of_description = len(description) returns_accepted = 1 if str(response['Item']['ReturnPolicy']['ReturnsAccepted']['value']).find('ReturnsNotAccepted') >= 0: returns_accepted = 0 if len(specifics) > 3: for entry in specifics: if (entry['Name']['value'] == 'Scale'): if not (entry['Value']['value'] == '1:64'): return 'null' if (entry['Name']['value'] == 'Brand'): if not (entry['Value']['value'] == 'Hot Wheels'): return 'null' if (entry['Name']['value'] == 'Vehicle Make'): if not (entry['Value']['value'] == 'Ford'): return 'null' model = convertModelToNumber(title) quantity = int(response['Item']['Quantity']['value']) # take only items which have an assigned model number, the quantity field is 1, ... if (len(description) > 0) & (len(pictures) > 0) & (condition > 0) & (price != 0) & (model >= 0) & (duration > 0) & (seller_rating_count >= 0) & (quantity == 1): pictures_list = list() if len(pictures) == 1: for y in range(0,3): pictures_list.append(str(pictures['value'])) else: for y in range(0,len(pictures)): pictures_list.append(str(pictures[y]['value'])) if len(pictures) == 2: pictures_list.append(str(pictures[1]['value'])) # save the features to a list item_list = list() item_list.append(title) #0 item_list.append(description) #1 item_list.append(category) #2 item_list.append(int(nbr+1)) #3 item_list.append(int(itemId)) #4 item_list.append(condition) #5 item_list.append(price) #6 item_list.append(model) #7 item_list.append(model) #8 item_list.append(seller_rating) #9 item_list.append(seller_rating_count) #10 item_list.append(duration) #11 item_list.append(nbr_of_pictures) #12 item_list.append(len_of_description) #13 item_list.append(end_weekday) #14 item_list.append(start_weekday) #15 item_list.append(end_hour) #16 item_list.append(handling_time) #17 item_list.append(global_shipping) #18 item_list.append(shipping_locations) #19 item_list.append(shipping_type) #20 item_list.append(returns_accepted) #21 item_list.append(pictures_list) #22 return item_list return 'null'