Ejemplo n.º 1
0
    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())
Ejemplo n.º 2
0
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'
Ejemplo n.º 3
0
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'