def memberMessages(opts): api = trading( debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True ) now = datetime.datetime.now() memberData = { "WarningLevel": "High", "MailMessageType": "All", # "MessageStatus": "Unanswered", "StartCreationTime": now - datetime.timedelta(days=60), "EndCreationTime": now, "Pagination": {"EntriesPerPage": "5", "PageNumber": "1"}, } api.execute("GetMemberMessages", memberData) dump(api) if api.response_dict().MemberMessage: messages = api.response_dict().MemberMessage.MemberMessageExchange if type(messages) != list: messages = [messages] for m in messages: print("%s: %s" % (m.CreationDate, m.Question.Subject[:50]))
def getItemDetail(self, item_id=None): print "retrieving results for item", print item_id print "Using ebay trading SDK version %s" % ebaysdk.get_version() print "====================" # build and execute ebay API call GetItemTransactions api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') api.execute('GetItem', {'ItemID': item_id, 'DetailLevel': 'ReturnAll'}) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() debug_results = parseString(self.removeNonAscii( api.response_content())) print debug_results.toprettyxml()
def memberMessages(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True) now = datetime.datetime.now() memberData = { "WarningLevel": "High", "MailMessageType": "All", # "MessageStatus": "Unanswered", "StartCreationTime": now - datetime.timedelta(days=60), "EndCreationTime": now, "Pagination": { "EntriesPerPage": "5", "PageNumber": "1" } } api.execute('GetMemberMessages', memberData) dump(api) for m in api.response_dict().MemberMessage.MemberMessageExchange: print "%s: %s" % (m.CreationDate, m.Question.Subject[:50])
def getUser(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True, timeout=20, siteid=101) api.execute('GetUser', {'UserID': 'biddergoat'}) dump(api, full=True)
def getOrders(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True, timeout=20) api.execute('GetOrders', {'NumberOfDays': 30}) dump(api, full=True)
def verifyAddItemErrorCodes(opts): """http://www.utilities-online.info/xmltojson/#.UXli2it4avc """ api = trading( debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=False ) myitem = { "Item": { "Title": "Harry Potter and the Philosopher's Stone", "Description": "This is the first book in the Harry Potter series. In excellent condition!", "PrimaryCategory": {"CategoryID": "377aaaaaa"}, "StartPrice": "1.0", "CategoryMappingAllowed": "true", "Country": "US", "ConditionID": "3000", "Currency": "USD", "DispatchTimeMax": "3", "ListingDuration": "Days_7", "ListingType": "Chinese", "PaymentMethods": "PayPal", "PayPalEmailAddress": "*****@*****.**", "PictureDetails": {"PictureURL": "http://i1.sandbox.ebayimg.com/03/i/00/30/07/20_1.JPG?set_id=8800005007"}, "PostalCode": "95125", "Quantity": "1", "ReturnPolicy": { "ReturnsAcceptedOption": "ReturnsAccepted", "RefundOption": "MoneyBack", "ReturnsWithinOption": "Days_30", "Description": "If you are not satisfied, return the book for refund.", "ShippingCostPaidByOption": "Buyer", }, "ShippingDetails": { "ShippingType": "Flat", "ShippingServiceOptions": { "ShippingServicePriority": "1", "ShippingService": "USPSMedia", "ShippingServiceCost": "2.50", }, }, "Site": "US", } } api.execute("VerifyAddItem", myitem) if api.error(): # traverse the DOM to look for error codes for node in api.response_dom().getElementsByTagName("ErrorCode"): print("error code: %s" % ebaysdk.nodeText(node)) # check for invalid data - error code 37 if 37 in api.response_codes(): print("Invalid data in request")
def getTokenStatus(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=False) api.execute('GetTokenStatus') if api.error(): raise Exception(api.error()) dump(api)
def verifyAddItemErrorCodes(opts): """http://www.utilities-online.info/xmltojson/#.UXli2it4avc """ api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=False) myitem = { "Item": { "Title": "Harry Potter and the Philosopher's Stone", "Description": "This is the first book in the Harry Potter series. In excellent condition!", "PrimaryCategory": {"CategoryID": "377aaaaaa"}, "StartPrice": "1.0", "CategoryMappingAllowed": "true", "Country": "US", "ConditionID": "3000", "Currency": "USD", "DispatchTimeMax": "3", "ListingDuration": "Days_7", "ListingType": "Chinese", "PaymentMethods": "PayPal", "PayPalEmailAddress": "*****@*****.**", "PictureDetails": {"PictureURL": "http://i1.sandbox.ebayimg.com/03/i/00/30/07/20_1.JPG?set_id=8800005007"}, "PostalCode": "95125", "Quantity": "1", "ReturnPolicy": { "ReturnsAcceptedOption": "ReturnsAccepted", "RefundOption": "MoneyBack", "ReturnsWithinOption": "Days_30", "Description": "If you are not satisfied, return the book for refund.", "ShippingCostPaidByOption": "Buyer" }, "ShippingDetails": { "ShippingType": "Flat", "ShippingServiceOptions": { "ShippingServicePriority": "1", "ShippingService": "USPSMedia", "ShippingServiceCost": "2.50" } }, "Site": "US" } } api.execute('VerifyAddItem', myitem) if api.error(): # traverse the DOM to look for error codes for node in api.response_dom().getElementsByTagName('ErrorCode'): print("error code: %s" % ebaysdk.nodeText(node)) # check for invalid data - error code 37 if 37 in api.response_codes(): print("Invalid data in request")
def run(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid) api.execute("GetCharities", {"CharityID": 3897}) if api.error(): raise Exception(api.error()) dump(api) print(api.response_dict().Charity.Name)
def run(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid) api.execute('GetCharities', {'CharityID': 3897}) if api.error(): raise Exception(api.error()) dump(api) print(api.response_dict().Charity.Name)
def __init__(self, **kwargs): """ Initialization method. Parameters ---------- sandbox : boolean see Ebay class Returns ------- New instance of :class:`Trading` : Trading Examples -------- >>> trading = Trading(sandbox=True) >>> trading #doctest: +ELLIPSIS <app.api.Trading object at 0x...> >>> trading.api.config.values['siteid'] 0 >>> trading = Trading(sandbox=True, country='UK') >>> trading.api.config.values['siteid'] 3 """ super(Trading, self).__init__(**kwargs) # for travis.ci since the token is too large for travis encrypt env_file = 'envs.yml' if self.sandbox: domain = 'api.sandbox.ebay.com' certid = kwargs.get('certid', getenv('EBAY_SB_CERT_ID')) token = kwargs.get('token', getenv('EBAY_SB_TOKEN')) token = (token or getenv_from_file('EBAY_SB_TOKEN', env_file)) else: domain = 'api.ebay.com' certid = kwargs.get('certid', getenv('EBAY_LIVE_CERT_ID')) token = kwargs.get('token', getenv('EBAY_LIVE_TOKEN')) token = (token or getenv_from_file('EBAY_LIVE_TOKEN', env_file)) # TODO: add KeyError exception handling new = { 'siteid': self.global_ids[self.kwargs['country']]['countryid'], 'domain': domain, 'certid': certid, 'token': token, 'version': 861, 'compatibility': 861, } self.kwargs.update(new) self.api = trading(**self.kwargs)
def verifyAddItem(opts): """http://www.utilities-online.info/xmltojson/#.UXli2it4avc """ api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=False) myitem = { "Item": { "Title": "Harry Potter and the Philosopher's Stone", "Description": "This is the first book in the Harry Potter series. In excellent condition!", "PrimaryCategory": {"CategoryID": "377"}, "StartPrice": "1.0", "CategoryMappingAllowed": "true", "Country": "US", "ConditionID": "3000", "Currency": "USD", "DispatchTimeMax": "3", "ListingDuration": "Days_7", "ListingType": "Chinese", "PaymentMethods": "PayPal", "PayPalEmailAddress": "*****@*****.**", "PictureDetails": {"PictureURL": "http://i1.sandbox.ebayimg.com/03/i/00/30/07/20_1.JPG?set_id=8800005007"}, "PostalCode": "95125", "Quantity": "1", "ReturnPolicy": { "ReturnsAcceptedOption": "ReturnsAccepted", "RefundOption": "MoneyBack", "ReturnsWithinOption": "Days_30", "Description": "If you are not satisfied, return the book for refund.", "ShippingCostPaidByOption": "Buyer" }, "ShippingDetails": { "ShippingType": "Flat", "ShippingServiceOptions": { "ShippingServicePriority": "1", "ShippingService": "USPSMedia", "ShippingServiceCost": "2.50" } }, "Site": "US" } } api.execute('VerifyAddItem', myitem) if api.error(): raise Exception(api.error()) dump(api)
def feedback(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=False) api.execute('GetFeedback', {'UserID': 'tim0th3us'}) if api.error(): raise Exception(api.error()) dump(api) if int(api.response_dict().FeedbackScore) > 50: print("Doing good!") else: print("Sell more, buy more..")
def getOrders(opts): api = trading( debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True, timeout=20, ) api.execute("GetOrders", {"NumberOfDays": 30}) dump(api, full=False)
def categories(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True, timeout=20, siteid=101) now = datetime.datetime.now() callData = { 'DetailLevel': 'ReturnAll', 'CategorySiteID': 101, 'LevelLimit': 4, } api.execute('GetCategories', callData) dump(api, full=True)
def getUser(opts): api = trading( debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True, timeout=20, siteid=101, ) api.execute("GetUser", {"UserID": "biddergoat"}) dump(api, full=True)
def getCategories(self): # build and execute ebay API call GetItemTransactions api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') api.execute('GetCategories', {'DetailLevel': 'ReturnAll', 'ViewAllNodes': 'true'}) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() debug_results = parseString(self.removeNonAscii(api.response_content())) print debug_results.toprettyxml()
def uploadPicture(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True) pictureData = { "WarningLevel": "High", "ExternalPictureURL": "http://developer.ebay.com/DevZone/XML/docs/images/hp_book_image.jpg", "PictureName": "WorldLeaders" } api.execute('UploadSiteHostedPictures', pictureData) if api.error(): raise Exception(api.error()) dump(api)
def categories(opts): api = trading( debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid, warnings=True, timeout=20, siteid=101, ) now = datetime.datetime.now() callData = {"DetailLevel": "ReturnAll", "CategorySiteID": 101, "LevelLimit": 4} api.execute("GetCategories", callData) dump(api, full=True)
def run(opts): api = trading(debug=opts.debug, config_file=opts.yaml, appid=opts.appid, certid=opts.certid, devid=opts.devid) api.execute('GetCharities', {'CharityID': 3897}) # checkfor errors if api.error(): raise Exception(api.error()) print "Trading samples for SDK version %s" % ebaysdk.get_version() if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() dictstr = "%s" % api.response_dict() print "Response dictionary: %s..." % dictstr[:150] print api.response_dict().Charity.Name print api.response_content()
def getItemDetail(self, item_id = None): print "retrieving results for item", print item_id print "Using ebay trading SDK version %s" % ebaysdk.get_version() print "====================" # build and execute ebay API call GetItemTransactions api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') api.execute('GetItem', {'ItemID': item_id, 'DetailLevel': 'ReturnAll'}) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() debug_results = parseString(self.removeNonAscii(api.response_content())) print debug_results.toprettyxml()
def getCategories(self): # build and execute ebay API call GetItemTransactions api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') api.execute('GetCategories', { 'DetailLevel': 'ReturnAll', 'ViewAllNodes': 'true' }) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() debug_results = parseString(self.removeNonAscii( api.response_content())) print debug_results.toprettyxml()
def main(): api = trading(domain='api.sandbox.ebay.com', appid="ding18d4c-56fe-45dd-9320-d17523ee18b", devid="6a3e6a37-1763-49a2-810b-68bc6a15ee26", certid="356d53fe-7910-4247-9e99-61727cc3a4da", token="AgAAAA**AQAAAA**aAAAAA**X3bWUg**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4GhC5eHowSdj6x9nY+seQ**ZH4CAA**AAMAAA**dsAoBo/3vv1yuOd4aPGBtq5ilPzSLM+3vsnOHfYuTn47JcoylH6TTyp1jH4yICQcQ6VL9FQ/0FN5YWpGy1UhM5fD5pEFIcYSUD2aECDOP55HW2KIlG4+in/NSJmp89DNj2FK1GDQzuZT3xy0pDI2yfHLW3CL1HcCIsWCNzkG0FVDJp8w5u3Nu7PVDkqQpIn5eUFMSrwyk3NalGYbPuHXkyMmS9KmGSmvrPthbhucNi1H0ihirPfQ5SaAW7O4T1r8EHfZa430655/VayOydUSovBnCnRE+WwZGg/ZRRWHIZJxbotCmD1kCH0ymE6FUl2QLm1hjkaESpKAmtFgpjhsaCVdt7vCUAt23A23P+7LBkfLsBrPwDIaeEVDEjGjFojEqliQfhq/lAcJhpO6Xi2db55fvZX/V8+7IpaHyzwtioXW8Azx8N7v+sx2mQ2spG7OWzGc+gdwW4a8lUVl3TRp0BywDqhOCXPKN94DK+Vrh6LvmzxjLvFzdWxz4YDjQ98Osyih66EfX1R0umXJPu2B3HTOpFHBtvS/TrpJzr8oOOVGgjDbyXL8yZd40PRnxi6Rkvyhj77hrGjzeowkaboLTWuqwjLTgkg9loWqQWoLjKAtVBmpasfP61bGR5y9vZhyM/b7SeHCAae1+/IJ+GB8y8d1RW022WFKZtcTiBAEvka2URU0TX7pmgEqDX1nM3a2TMlehriD8bx6WvIdEbqM7IzjFLcQ8kI+0kcOn13PIWsvHuwMHz6capQ5jYsZEu1S") # api.execute('GetCategories', { # # 'CategorySiteID':0 \ # 'LevelLimit':1 \ # ,'DetailLevel':'ReturnAll' # }) # api.execute('GetStore', { # # 'CategorySiteID':0 \ # 'LevelLimit':1 \ # ,'DetailLevel':'ReturnAll' # }) # api.execute('AddItem', { \ # 'Title':'LI Junjie Harry Potter and the Philosopher\'s Stone' \ # , 'Description': ' This is the first book in the Harry Potter series. In excellent condition!' \ # , 'PrimaryCategory':'607504' \ # , 'StartPrice' : '1.0' \ # , 'CategoryMappingAllowed' : 'true' \ # , 'Country' : 'US' \ # , 'Currency' : 'USD' \ # , 'DispatchTimeMax' : '3' \ # , 'ListingDuration' : 'Days_7' \ # , 'ListingType' : 'Chinese' \ # , 'PaymentMethods' : 'PayPal' \ # , 'PayPalEmailAddress' : '*****@*****.**' \ # , 'PictureDetails' : 'http://pics.ebay.com/aw/pics/dot_clear.gif' \ # , 'PostalCode' : '95125' \ # , 'Quantity' : '1' \ # , 'ReturnPolicy' : {'ReturnsAcceptedOption' : 'ReturnsAccepted' \ # , 'RefundOption' : 'MoneyBack' \ # , 'ReturnsWithinOption' : 'Days_30' \ # , 'Description' : 'If you are not satisfied, return the book for refund.' \ # , 'ShippingCostPaidByOption' : 'Buyer' \ # } \ # , 'ShippingDetails' : {'ShippingType' : 'Flat' \ # , 'ShippingServiceOptions' : { 'ShippingServicePriority' : '1' \ # , 'ShippingService' : 'USPSMedia' \ # , 'ShippingServiceCost' : '2.50' \ # , 'ShippingCostPaidByOption' : 'Buyer' \ # } \ # } \ # , 'Site' : 'US' \ # }) '''if True: api.execute('AddItem', { 'Item' : { \ 'Title':'Bill eBay test \'s Stone' \ , 'Description': ' This is a test example.!' \ , 'PrimaryCategory': {'CategoryID': '20936' } \ , 'ConditionID' : '1000' \ , 'StartPrice' : '1.0' \ , 'CategoryMappingAllowed' : 'true' \ , 'Country' : 'US' \ , 'Currency' : 'USD' \ , 'DispatchTimeMax' : '3' \ , 'ListingDuration' : 'Days_7' \ , 'ListingType' : 'Chinese' \ , 'PaymentMethods' : 'PayPal' \ , 'PayPalEmailAddress' : '*****@*****.**' \ , 'PictureDetails' : 'http://pics.ebay.com/aw/pics/dot_clear.gif' \ , 'PostalCode' : '95125' \ , 'Quantity' : '1' \ , 'ReturnPolicy' : {'ReturnsAcceptedOption' : 'ReturnsAccepted' \ , 'RefundOption' : 'MoneyBack' \ , 'ReturnsWithinOption' : 'Days_30' \ , 'Description' : 'If you are not satisfied, return the book for refund.' \ , 'ShippingCostPaidByOption' : 'Buyer' \ } \ , 'ShippingDetails' : {'ShippingType' : 'Flat' \ , 'ShippingServiceOptions' : { 'ShippingServicePriority' : '1' \ , 'ShippingService' : 'USPSMedia' \ , 'ShippingServiceCost' : '2.50' \ } \ } \ , 'Site' : 'US' \ } })''' if True: api.execute('GetSellerList',{ 'StartTimeFrom':'2014-01-01T19:09:02.768Z', 'StartTimeTo':'2014-01-15T23:23:02.768Z', 'DetailLevel': 'ItemReturnAttributes', 'Pagination':{ 'EntriesPerPage':'10', 'PageNumber':'1'}, }) print api.response_dict()
def getItemTrans(self, item_id = None): print "retrieving results for item", print item_id print "Using ebay trading SDK version %s" % ebaysdk.get_version() print "====================" # build and execute ebay API call GetItemTransactions api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') api.execute('GetItemTransactions', {'ItemID': item_id, 'NumberOfDays': 30}) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() seller = api.response_dict().Item.Seller.UserID title = self.removeNonAscii(api.response_dict().Item.Title) sold = api.response_dict().Item.SellingStatus.QuantitySold if self.opts.debug: debug_results = parseString(self.removeNonAscii(api.response_content())) with open(item_id + "_full_results.xml", "w") as f: f.write( debug_results.toprettyxml() ) print "Listing" + title print "Seller: " + seller print "Quanitiy Sold: " + sold print "===========================================================================" print "========================= Sales History (30 days)==========================" print "===========================================================================" # output all transactions if api.response_dict().TransactionArray != None: if type(api.response_dict().TransactionArray.Transaction) is list: for trans in api.response_dict().TransactionArray.Transaction: date = trans.CreatedDate user = trans.Buyer.UserID paid = trans.ConvertedTransactionPrice.value print "Date: %(date)s \t Price: %(price)s \t User: %(user)s " % \ {'date': date, 'price' : paid, 'user' : user} else: # if only one transaction, we have to deal with a list instead of dict trans = api.response_dict().TransactionArray.Transaction date = trans.CreatedDate user = trans.Buyer.UserID paid = trans.ConvertedTransactionPrice.value shipping = trans.ShippingDetails.ShippingServiceOptions.ShippingService print "Date: %(date)s \t Price: %(price)s \t User: %(user)s \t Shipping: %(ship)s" % \ {'date': date, 'price' : paid, 'user' : user, 'ship' : shipping}
api.execute('GetCategories', {'LevelLimit' : 1, 'DetailLevel' : 'ReturnAll'}) return api.response_dict() def get_sub_category(parent_c_id, api): pass def get_top_selling_products(c_id, api): #api.execute('getTopSellingProducts', {}) api.execute('findItemsByCategory', { 'categoryId' : c_id }) return api.response_dict() trade = trading(domain='api.sandbox.ebay.com', appid="MatthewB-33a9-4d50-b56e-4398cece88d6", devid="41d63e06-0775-4692-b656-896a9a4b39d8", certid="5707a4f4-912d-4154-ac6e-d59ec72d3e75", token="AgAAAA**AQAAAA**aAAAAA**wtLjUg**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4GhC5iCowudj6x9nY+seQ**a4ECAA**AAMAAA**bz7sLZhXIMpFSPQQ/Jjkj8XQLJ5IeP/mLRf5oCVeXBmeX91trkLKBR9adYukIDIBwqpT+RxJwGBcdY8DiOu2Va3CWquDpDcGr32NrjS3tlDJp4z09e5vvJChiWD4jAlVgu0NVZKKOSMO/Uc5rYuZQQO0JPdTGbg+r4Lut7JwVJL5IthVTTv7Ec/53E0CAbjVGFBcWvquyeLJ4GUH5sNJM7a0yeNLIv8k4O8x+Aas3igY4LfLaDAOwziFrO83+7UHU9cyf4juHhxPTPvRhGvMdBwFJihLosQ7OPh8HNOecRnnm1cK5cziwjQCqGSJJpK9fB/7EtpKOK015Et2tHF18TWyYkSrbq7TPNoGVE7kAOLK8Q/dEEdlTyJrSq4gM/aBKKHzMwkTyYfzY0Fn+/wRTz6IlExWt6NLjJf6ByzZzk7jgh98VxQMgnYxaPyZ1sNlCuLaTbt2Ui866kIZsSJr7beY2cn6+58/cZuLaJgJoaYAtW526VUGSIHB1RE88cuXfafBgeviqjC6TDUVu1w9KGdGlQFPj38RFXXDbCriIe6P1jDtdl4vt02w9uVPWBDqxnVB+7q+N6sYSrMymhMHKXNr47y06drZdAqw3/ZCx2UMdMGYjyNjbZCg7LJUx5ZRCUPgJSPFSyaTv6c8viu8LLYwaH/QSKGpC8gFkGPqbvC1zUoq5E8H26NyKAO4+9ZqFnTqZxFAv82Ik94ybqGUYkC6TSBqvEBV/OC435/sVZZ+4+/GGCfCMPCuM2AlcvqM") merch = merchandising(domain='svcs.sandbox.ebay.com', appid='MatthewB-33a9-4d50-b56e-4398cece88d6') find = finding(domain='svcs.sandbox.ebay.com', appid='MatthewB-33a9-4d50-b56e-4398cece88d6') shop = shopping(domain='open.api.sandbox.ebay.com', appid='MatthewB-33a9-4d50-b56e-4398cece88d6') #pprint.pprint(get_categories(trade)) top_selling_products = get_top_selling_products(246, find) pprint.pprint(top_selling_products)
def getItemTrans(self, item_id=None): print "retrieving results for item", print item_id print "Using ebay trading SDK version %s" % ebaysdk.get_version() print "====================" # build and execute ebay API call GetItemTransactions api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') api.execute('GetItemTransactions', { 'ItemID': item_id, 'NumberOfDays': 30 }) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() seller = api.response_dict().Item.Seller.UserID title = self.removeNonAscii(api.response_dict().Item.Title) sold = api.response_dict().Item.SellingStatus.QuantitySold if self.opts.debug: debug_results = parseString( self.removeNonAscii(api.response_content())) with open(item_id + "_full_results.xml", "w") as f: f.write(debug_results.toprettyxml()) print "Listing" + title print "Seller: " + seller print "Quanitiy Sold: " + sold print "===========================================================================" print "========================= Sales History (30 days)==========================" print "===========================================================================" # output all transactions if api.response_dict().TransactionArray != None: if type(api.response_dict().TransactionArray.Transaction) is list: for trans in api.response_dict().TransactionArray.Transaction: date = trans.CreatedDate user = trans.Buyer.UserID paid = trans.ConvertedTransactionPrice.value print "Date: %(date)s \t Price: %(price)s \t User: %(user)s " % \ {'date': date, 'price' : paid, 'user' : user} else: # if only one transaction, we have to deal with a list instead of dict trans = api.response_dict().TransactionArray.Transaction date = trans.CreatedDate user = trans.Buyer.UserID paid = trans.ConvertedTransactionPrice.value shipping = trans.ShippingDetails.ShippingServiceOptions.ShippingService print "Date: %(date)s \t Price: %(price)s \t User: %(user)s \t Shipping: %(ship)s" % \ {'date': date, 'price' : paid, 'user' : user, 'ship' : shipping}
def auth(self): self.api = trading(domain='api.sandbox.ebay.com', appid=self.appid, devid=self.devid, certid=self.certid, token=self.token)
def getSellerItems(self, seller_id=None, cat_id=None, days=None): print "retrieving items for seller/category id: ", print seller_id + " / ", print cat_id print "Using ebay trading SDK version %s" % ebaysdk.get_version() print "====================" if days > 0: earliest = datetime.datetime.now() latest = earliest + (datetime.timedelta(days)) earliest_s = 'EndTimeFrom' latest_s = 'EndTimeTo' else: latest = datetime.datetime.now() earliest = latest + (datetime.timedelta(days)) earliest_s = 'StartTimeFrom' latest_s = 'StartTimeTo' print earliest print latest # build and execute ebay API call GetItemTransaction api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') page = 1 api.execute('GetSellerList', {'DetailLevel': 'ItemReturnDescription', \ 'Pagination':{'EntriesPerPage': 50, 'PageNumber': page},\ 'CategoryID': cat_id,'UserID': seller_id, \ earliest_s: earliest, latest_s: latest}) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() num_pages = int( api.response_dict().PaginationResult.TotalNumberOfPages) while 1: if self.opts.debug: debug_results = parseString( self.removeNonAscii(api.response_content())) print debug_results.toprettyxml() if api.error(): print api.error() raise Exception(api.error()) elif api.response_dict().ItemArray != None: for item in api.response_dict().ItemArray.Item: id = item.ItemID cat = item.PrimaryCategory.CategoryID list_date, time = item.ListingDetails.StartTime.split('T') quantity = item.Quantity sold = item.SellingStatus.QuantitySold cprice = item.SellingStatus.ConvertedCurrentPrice.value try: item.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.value except: sprice = 'NA' else: sprice = item.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.value title = item.Title SKU = item.SKU hits = item.HitCount print "ItemID> %(item)s >Category> %(cat)s >SKU> %(SKU)s >Title> %(title)s >Quantity> %(quantity)s >Price> %(price)s >ShipCost> %(ship)s >Sold> %(sold)s >Listed> %(list_date)s >PageHits> %(hits)s" % \ {'item': id, 'cat' : cat, 'SKU' : SKU, 'title': title, 'quantity' : quantity, 'price': cprice, 'ship': sprice, 'sold': sold, 'list_date': list_date, 'hits': hits } #determine if we need another pass page += 1 sys.stdout.flush() if page <= num_pages: api.execute('GetSellerList', {'DetailLevel': 'ItemReturnDescription', \ 'Pagination':{'EntriesPerPage': 50, 'PageNumber': page},\ 'CategoryID': cat_id,'UserID': seller_id, \ earliest_s: earliest, latest_s: latest, \ 'OutputSelector': 'ItemArray.Item.ItemID,ItemArray.Item.PrimaryCategory.CategoryID,\ ItemArray.Item.ListingDetails.StartTime,ItemArray.Item.Quantity,ItemArray.Item.SellingStatus.QuantitySold,\ ItemArray.Item.SellingStatus.ConvertedCurrentPrice,ItemArray.Item.ShippingDetails.ShippingServiceOptions.ShippingServiceCost,\ ItemArray.Item.Title,ItemArray.Item.SKU,ItemArray.Item.HitCount' }) else: break
def getSellerItems(self, seller_id = None, cat_id = None, days = None): print "retrieving items for seller/category id: ", print seller_id + " / ", print cat_id print "Using ebay trading SDK version %s" % ebaysdk.get_version() print "====================" if days > 0: earliest = datetime.datetime.now() latest = earliest + (datetime.timedelta(days)) earliest_s = 'EndTimeFrom' latest_s = 'EndTimeTo' else: latest = datetime.datetime.now() earliest = latest + (datetime.timedelta(days)) earliest_s = 'StartTimeFrom' latest_s = 'StartTimeTo' print earliest print latest # build and execute ebay API call GetItemTransaction api = trading(debug=self.opts.debug, config_file=self.opts.yaml, appid=self.opts.appid, certid=self.opts.certid, devid=self.opts.devid) token = api.api_config.get('token') page = 1 api.execute('GetSellerList', {'DetailLevel': 'ItemReturnDescription', \ 'Pagination':{'EntriesPerPage': 50, 'PageNumber': page},\ 'CategoryID': cat_id,'UserID': seller_id, \ earliest_s: earliest, latest_s: latest}) if api.error(): print api.error() raise Exception(api.error()) if api.response_content(): print "Call Success: %s in length" % len(api.response_content()) print "Response code: %s" % api.response_code() print "Response DOM: %s" % api.response_dom() num_pages = int(api.response_dict().PaginationResult.TotalNumberOfPages) while 1: if self.opts.debug: debug_results = parseString(self.removeNonAscii(api.response_content())) print debug_results.toprettyxml() if api.error(): print api.error() raise Exception(api.error()) elif api.response_dict().ItemArray != None: for item in api.response_dict().ItemArray.Item: id = item.ItemID cat = item.PrimaryCategory.CategoryID list_date, time = item.ListingDetails.StartTime.split('T') quantity = item.Quantity sold = item.SellingStatus.QuantitySold cprice = item.SellingStatus.ConvertedCurrentPrice.value try: item.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.value except: sprice = 'NA' else: sprice = item.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.value title = item.Title SKU = item.SKU hits = item.HitCount print "ItemID> %(item)s >Category> %(cat)s >SKU> %(SKU)s >Title> %(title)s >Quantity> %(quantity)s >Price> %(price)s >ShipCost> %(ship)s >Sold> %(sold)s >Listed> %(list_date)s >PageHits> %(hits)s" % \ {'item': id, 'cat' : cat, 'SKU' : SKU, 'title': title, 'quantity' : quantity, 'price': cprice, 'ship': sprice, 'sold': sold, 'list_date': list_date, 'hits': hits } #determine if we need another pass page+=1 sys.stdout.flush() if page <= num_pages: api.execute('GetSellerList', {'DetailLevel': 'ItemReturnDescription', \ 'Pagination':{'EntriesPerPage': 50, 'PageNumber': page},\ 'CategoryID': cat_id,'UserID': seller_id, \ earliest_s: earliest, latest_s: latest, \ 'OutputSelector': 'ItemArray.Item.ItemID,ItemArray.Item.PrimaryCategory.CategoryID,\ ItemArray.Item.ListingDetails.StartTime,ItemArray.Item.Quantity,ItemArray.Item.SellingStatus.QuantitySold,\ ItemArray.Item.SellingStatus.ConvertedCurrentPrice,ItemArray.Item.ShippingDetails.ShippingServiceOptions.ShippingServiceCost,\ ItemArray.Item.Title,ItemArray.Item.SKU,ItemArray.Item.HitCount'}) else:break
# 用来创建一个ebay的产品页 from ebaysdk import trading import httplib, ConfigParser, urlparse from xml.dom.minidom import parse, parseString import datetime eBayDomain = 'api.sandbox.ebay.com' eBayAppId ="ding18d4c-56fe-45dd-9320-d17523ee18b" eBayDevId="6a3e6a37-1763-49a2-810b-68bc6a15ee26" eBayCertId="356d53fe-7910-4247-9e99-61727cc3a4da" eBayToken="AgAAAA**AQAAAA**aAAAAA**X3bWUg**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4GhC5eHowSdj6x9nY+seQ**ZH4CAA**AAMAAA**dsAoBo/3vv1yuOd4aPGBtq5ilPzSLM+3vsnOHfYuTn47JcoylH6TTyp1jH4yICQcQ6VL9FQ/0FN5YWpGy1UhM5fD5pEFIcYSUD2aECDOP55HW2KIlG4+in/NSJmp89DNj2FK1GDQzuZT3xy0pDI2yfHLW3CL1HcCIsWCNzkG0FVDJp8w5u3Nu7PVDkqQpIn5eUFMSrwyk3NalGYbPuHXkyMmS9KmGSmvrPthbhucNi1H0ihirPfQ5SaAW7O4T1r8EHfZa430655/VayOydUSovBnCnRE+WwZGg/ZRRWHIZJxbotCmD1kCH0ymE6FUl2QLm1hjkaESpKAmtFgpjhsaCVdt7vCUAt23A23P+7LBkfLsBrPwDIaeEVDEjGjFojEqliQfhq/lAcJhpO6Xi2db55fvZX/V8+7IpaHyzwtioXW8Azx8N7v+sx2mQ2spG7OWzGc+gdwW4a8lUVl3TRp0BywDqhOCXPKN94DK+Vrh6LvmzxjLvFzdWxz4YDjQ98Osyih66EfX1R0umXJPu2B3HTOpFHBtvS/TrpJzr8oOOVGgjDbyXL8yZd40PRnxi6Rkvyhj77hrGjzeowkaboLTWuqwjLTgkg9loWqQWoLjKAtVBmpasfP61bGR5y9vZhyM/b7SeHCAae1+/IJ+GB8y8d1RW022WFKZtcTiBAEvka2URU0TX7pmgEqDX1nM3a2TMlehriD8bx6WvIdEbqM7IzjFLcQ8kI+0kcOn13PIWsvHuwMHz6capQ5jYsZEu1S" api = trading(domain=eBayDomain, appid=eBayAppId, devid=eBayDevId, certid=eBayCertId, token=eBayToken) def ebayGetSellerList(DetailLevel = 'ReturnAll',EntriesPerPage = '10' ,PageNumber = '1'): today = datetime.date.today() oneday = datetime.timedelta(days=1) tomorrow = today + oneday now = str(datetime.datetime.now()) StartTimeTo = str(tomorrow)+"T"+now[11:23]+"Z" #print StartTimeTo api.execute('GetSellerList',{ 'StartTimeFrom':'2014-01-01T19:09:02.768Z', 'StartTimeTo':StartTimeTo,#'2014-01-15T23:23:02.768Z',