Пример #1
0
def EndItems(Items):
    api = Connection(config_file='user.yaml', domain="api.ebay.com")

    temp_data = '{"EndItemRequestContainer":['
    #request =json.loads("{}")

    #res = Items.split(",")
    i = 1

    for iid in Items:
        temp_data = temp_data + '{"MessageID":' + "\"" + str(
            i
        ) + "\"" + ',"EndingReason":"NotAvailable","ItemID": \"' + iid + '\" }'
        if (len(Items) > i):
            temp_data = temp_data + ','
        i = i + 1

    temp_data = temp_data + ']}'
    #print(temp_data)
    #request = eval(temp_data)
    request = json.loads(temp_data)
    print(request)
    response = api.execute('EndItems', request)

    print(f"{response.reply.Ack}")
Пример #2
0
 def __init__(
     self,
     domain='api.ebay.com',
     appid='ZhouPeng-3242-4cc7-88fd-310f513fcd71',
     devid='df3f2898-65b1-4e15-afd5-172b989903aa',
     certid='a0e19cf9-9b2b-457f-b6f1-87f3f600ca63',
     # token='AgAAAA**AQAAAA**aAAAAA**cJyLVQ**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wMkoqiC5mHoQmdj6x9nY+seQ**N+QCAA**AAMAAA**nLCwNt4AQt1TRtd2ydNIMuZ2JYnQZKVVYarn41QQfBSqccEDld22ltKr+C/HJTN8AKD4+jn/nIEqtjNMkmh9sxTIa6jVVLAH5sN/93X7gTCmTkOsE/Av612U90nRoyQJ5bX1+NO25tMDZs9U0aTJIwVVu1BAB8/nsjL0pTCWw7KZACJ+a/aQ6swXLvSvOCWIBjFyCaWibKZseT2LoJMvJQmC2QpIuDsQ8cTYozLUYZqC88uKAjo7DNWIvaPVCdwkp/Vux3arR1Asin4ewX1l+LWCamWsXeBiVyaYq/oEUXABgknieVAPEpaFAfSzlrcTNmTWLBDDRwRGI/8hJCwK6/eJWexGrLk7U7p0kRltktNseTckAKT7g1ED4C5gUeQ4/nTHsNQBejUPTzTlwBWTJpwRaBFD7dAlbagH+TKaEJK41Esf/ZpL2599LUMolsO8tBgo0BhtCF/bYtdUUfopksIKNUwPXikadUxx6TurknnTtR1WDD229uUJIIf9BCS68WB56OfDTdXcZ8rdPZ0zdHuw5+BRxrumpFUzTQb5fJeHRDLPtQbLdX5rFPrS+NPJl6Qzi7bWNxUCydNQcIzKv7xLquIPoPx8bD1PRCoQbzjTQsOqhe9PBvLtcJ0Ggve78YjQKb5nDt6YThZ6D+1EOKdcthU03VizDfBKBLJ/NPqktDTx74tsS3l4feAjblGDoQ2RZXefJ9Jk3t+Qc4khlvl4mKpjZ4sCakh4qPWr9H6t3CN80hz5MO1Y7uHPUY61',
     token='AgAAAA**AQAAAA**aAAAAA**aCRbWA**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wDmYShCJCHogmdj6x9nY+seQ**N+QCAA**AAMAAA**ktFg8zDYputToOiGDvTfZku93pjbVq3rGn7AR53h1eWAByiTLP+Gd8uKuDof0BQ0prvskMARI/nHxkjFYUp7IUsQkZ6sH/E2UmmvRRwqDHZ/XsXt0+meLqS6ZHMjw7v/CpISJqnZjGChDSYPFRe6RboawkjPi8ial5wEXojlvNWvHl02yT92ih6dTYj44g2xprmmyOSyTYC8l8oG+YLKZ+FPzOj5zxO3Qm8rhVtQwc1KGGtHnthz2ZwHwbeFDh8cVp1qaFQmCaHc27ftM8/to2U22mccon5zRk6yf59EiN88WPzag/ii0XpkwELXWRsHKBfl/9pepWUqWZvgjhQ9jcGQsrYyQfS6T54dLcaJ7a2IrCxOvpdkv4Z26T7CpTpUBbYzG4olJI42jFMZBu5quqOanio2qbHNFov5Jq85jMR9Zx51KlKezNaauIW16upj7P2gvCwDt+E7xCQMoqKDrIyx7J0g0KLHKhSavzeC0vnrF0H9NAfqxVEdYtLUgbR9A8JQagPAYp+vPuMpSEbhc5/fTLBfD6YFSoJ+izMzx0n6Gj2df5n77hS3X1850eLzqzCREtUClZfJ7tcTMR+oU8i0aB75rWDr/sFKsfgW/rAe8hcuMzYBms+rsL4i7ddt5KWfCieMksAfabdUrPF5Owfr/24en/omwHXtBrb39u/oMKTfGZOS2JKyXdbpmpV1YWsJ8eDzxNIN0hJfG6wqrjdEJAUX5dkg4j5L5UXE6deogb9MUYHJgkP3nch5yPfS',
     # timeout=3
 ):
     self.idomain = domain
     self.iappid = appid
     self.idevid = devid
     self.icertid = certid
     self.itoken = token
     # self.timeout=
     self.mycon = Connection(
         domain=self.idomain,
         appid=self.iappid,
         devid=self.idevid,
         certid=self.icertid,
         token=self.itoken,
         timeout=15,
         config_file=None,
         #proxy_host='127.0.0.1',
         #proxy_port='1080'
     )
Пример #3
0
    def upload_images(self):
        for filename in glob.glob('{}*.jpg'.format(self.img_dir)):
            try:
                api = Connection(config_file=config.yaml_location,
                                 domain="api.ebay.com",
                                 debug=config.debug,
                                 siteid=config.site_id)

                # pass in an open file
                # the Requests module will close the file
                files = {'file': ('EbayImage', open(filename, 'rb'))}

                picture_data = {
                    "WarningLevel": "High",
                    "PictureName": "Item_img"
                }

                res = api.execute('UploadSiteHostedPictures',
                                  picture_data,
                                  files=files).dict()
                self.image_url_arr.append(
                    res["SiteHostedPictureDetails"]["FullURL"])
            except ConnectionError as e:
                print(e)
                print(e.response.dict())
Пример #4
0
def test_get_user(item):
    api = Connection(config_file='ebay.yaml')
    details_dict = dict()
    try:
        response = api.execute('GetUser', {
            "UserID": item,
            "DetailLevel": "ReturnAll"
        })
        details = response.reply
        print details
    except Exception as e:
        print e
Пример #5
0
def GetSessionID():
    api = Connection(config_file='ebay.yaml', domain="api.ebay.com")

    with open("config.yaml") as file:
        cfg = yaml.load(file)
        runam = cfg['runame']

    request = {'RuName': runam}

    response = api.execute('GetSessionID', request)
    webbrowser.open("https://signin.ebay.com/ws/eBayISAPI.dll?SignIn&runame=" +
                    runam + "&SessID=" + response.reply.SessionID)
    return response.reply.SessionID
Пример #6
0
def test_get_item(item):
    api = Connection(config_file='ebay.yaml')
    details_dict = dict()
    try:
        response = api.execute('GetItem', {
            "ItemID": item,
            "OutputSelector": "Seller",
            "DetailLevel": "ReturnAll"
        })
        details = response.reply.Item
        print details
    except Exception as e:
        print e
Пример #7
0
 def query(self, *args):
     try:
         api = Connection(
             config_file=None,
             appid=settings.EBAY_APP_ID,
             devid=settings.EBAY_DEV_ID,
             certid=settings.EBAY_CERT_ID,
             token=self.user.profile.ebay_token,
         )
         response = api.execute(*args)
         return response.dict()
     except ConnectionError as e:
         return e.response.dict()
Пример #8
0
def GetActiveItemsbyDay(ddays):
    api = Connection(config_file='user.yaml', domain="api.ebay.com")

    currentDT = datetime.datetime.now()
    startDT = datetime.datetime.now() - datetime.timedelta(days=100)
    a_bool = True
    pgnum = 1
    EndItemStr = []
    while a_bool:
        request = {
            'ErrorLanguage': 'en_US',
            'WarningLevel': "High",
            #'StartTimeFrom':"2020-05-01T00:00:00",
            'StartTimeFrom': startDT.strftime("%Y-%m-%dT%H:%M:%S"),
            'StartTimeTo': currentDT.strftime("%Y-%m-%dT%H:%M:%S"),
            'GranularityLevel': 'Medium',
            'Pagination': {
                'EntriesPerPage': 200,
                'PageNumber': pgnum,
            }
        }

        response = api.execute('GetSellerList', request)
        if (pgnum < int(response.reply.PaginationResult.TotalNumberOfPages)):
            pgnum = pgnum + 1
        else:
            a_bool = False

        if (int(response.reply.ReturnedItemCountActual) > 1):
            for Item in response.reply.ItemArray.Item:
                if (Item.SellingStatus.ListingStatus == "Active"
                        and (currentDT - Item.ListingDetails.StartTime).days >=
                        int(ddays)):
                    print(
                        f"Title:{Item.Title}, Price:{Item.SellingStatus.CurrentPrice}, Status:{Item.SellingStatus.ListingStatus},ID:{Item.ItemID}\n"
                    )
                    EndItemStr.append(Item.ItemID)
        elif (int(response.reply.ReturnedItemCountActual) > 0):
            if (response.reply.ItemArray.Item.SellingStatus.ListingStatus
                    == "Active"
                    and (currentDT - Item.ListingDetails.StartTime).days >=
                    int(ddays)):
                print(
                    f"Title:{Item.Title}, Price:{Item.SellingStatus.CurrentPrice}, Status:{Item.SellingStatus.ListingStatus},ID:{Item.ItemID}\n"
                )
                EndItemStr.append(Item.ItemID)

        if (a_bool == False):
            return EndItemStr
Пример #9
0
def get_user(username, output):
    """Get info on a user from eBay

    :param username: user name / id of user we get info on
    :param output: the file path which contains the info, JSON formatted
    """
    api = Connection(config_file=EBAY_API)
    response = api.execute('GetUser', {'UserID': username})

    user_response_data_object = response.reply.User

    items_list = convert_rdo_to_dict(user_response_data_object)
    json.dump(items_list, open(output, 'w'))

    pprint(items_list)
Пример #10
0
def list_item(item, images):
    api = Connection(config_file=config.yaml_location,
                     domain="api.sandbox.ebay.com",
                     debug=config.debug,
                     siteid=config.site_id)
    request = {
        "Item": {
            "Title": "{}".format(item.title),
            "Country": "GB",
            "Location": "England",
            "Site": "UK",
            # This is new, used, etc 3000 is 'used'
            # TODO add an option to specify this for parts etc
            "ConditionID": "3000",
            "PaymentMethods": "PayPal",
            "PayPalEmailAddress": "*****@*****.**",
            "PrimaryCategory": {
                "CategoryID": "{}".format(item.category_id),
            },
            "Description": "{}".format(item.desc),
            "ListingDuration": "Days_10",
            "StartPrice": "{}".format(item.price),
            "Currency": "GBP",
            "ReturnPolicy": {
                "ReturnsAcceptedOption": "ReturnsNotAccepted",
            },
            "PictureDetails": {
                "PictureURL": []
            },
            "ShippingDetails": {
                "ShippingServiceOptions": {
                    "FreeShipping": "True",
                    "ShippingService": "UK_RoyalMailSecondClassStandard"
                }
            },
            "DispatchTimeMax": "3"
        }
    }

    for img in item.image_url_arr:
        request["Item"]["PictureDetails"]["PictureURL"].append(img)

    # If debug mode then only use verify add item else use real add item api call
    if config.debug:
        api.execute("AddItem", request)
    else:
        api.execute("AddItem", request)
Пример #11
0
def GetActiveItems():

    api = Connection(config_file='user.yaml', domain="api.ebay.com")

    currentDT = datetime.datetime.now()
    a_bool = True
    pgnum = 1
    #print(currentDT.strftime("%Y-%m-%dT%H:%M:%S"))

    while a_bool:
        request = {
            'ErrorLanguage': 'en_US',
            'WarningLevel': "High",
            'StartTimeFrom': "2020-05-01T00:00:00",
            'StartTimeTo': currentDT.strftime("%Y-%m-%dT%H:%M:%S"),
            'GranularityLevel': 'Medium',
            'Pagination': {
                'EntriesPerPage': 200,
                'PageNumber': pgnum,
            }
        }

        response = api.execute('GetSellerList', request)
        if (pgnum < int(response.reply.PaginationResult.TotalNumberOfPages)):
            pgnum = pgnum + 1
        else:
            a_bool = False

        if (int(response.reply.ReturnedItemCountActual) > 1):
            for Item in response.reply.ItemArray.Item:
                if (Item.SellingStatus.ListingStatus == "Active"):
                    print(
                        f"Title:{Item.Title}, Price:{Item.SellingStatus.CurrentPrice}, Status:{Item.SellingStatus.ListingStatus},ID:{Item.ItemID}, Quantity:: {Item.Quantity}\n"
                    )
        else:
            if (response.reply.ItemArray.Item.SellingStatus.ListingStatus ==
                    "Active"):
                print(
                    f"Title:{Item.Title}, Price:{Item.SellingStatus.CurrentPrice}, Status:{Item.SellingStatus.ListingStatus}, ID:{Item.ItemID}, Quantity: : {Item.Quantity}\n"
                )
Пример #12
0
def FetchToken(SessionID):
    api = Connection(config_file='ebay.yaml', domain="api.ebay.com")

    request = {'SessionID': SessionID}

    response = api.execute('FetchToken', request)

    with open("ebay.yaml") as file:
        cfg = yaml.load(file)
        dict_file = {
            'name': 'ebay_api_config',
            'api.ebay.com': {
                'compatability': cfg["api.ebay.com"]["compatability"],
                'appid': cfg["api.ebay.com"]["appid"],
                'certid': cfg["api.ebay.com"]["certid"],
                'devid': cfg["api.ebay.com"]["devid"],
                'token': response.reply.eBayAuthToken
            }
        }

    with open('user.yaml', 'w') as file:
        documents = yaml.dump(dict_file, file, default_flow_style=False)
    return response.reply.eBayAuthToken
Пример #13
0
def get_item(item):
    api = Connection(config_file='ebay.yaml')
    details_dict = dict()
    try:
        response = api.execute('GetItem', {"ItemID": item})
        details = response.reply.Item
        details_dict['itemid'] = item
        details_dict['userid'] = details.Seller.UserID
        details_dict['quantitysold'] = details.SellingStatus.QuantitySold
        details_dict['starttime'] = details.ListingDetails.StartTime
        details_dict['currentprice'] = details.SellingStatus.CurrentPrice.value
        try:
            details_dict[
                'shippingcost'] = details.ShippingDetails.ShippingServiceOptions[
                    0].ShippingServiceCost.value
        except:
            details_dict['shippingcost'] = 0
        details_dict['location'] = details.Location
        details_dict['hitcount'] = 0
        details_dict['categoryname'] = details.PrimaryCategory.CategoryName
    except Exception as e:
        print e

    return details_dict
Пример #14
0
from ebaysdk.trading import Connection
from ebaysdk.exception import ConnectionError
from datetime import date
import datetime
import json, time

api = Connection(config_file="ebay.yaml")


def user_info():
    try:
        response = api.execute('GetUser', {})
        response = json.loads(json.dumps(response.dict()))
        email = response['User']['Email']
        feedback_score = response['User']['FeedbackScore']
        registration_date = response['User']['RegistrationDate']
        year = int(registration_date.split("-")[0])
        month = int(registration_date.split("-")[1])
        day = int(registration_date.split("-")[2].split("T")[0])
        today = datetime.date.today()
        register_date = datetime.date(year, month, day)
        registered = today - register_date
        registered = str(registered).split(",")[0]
        return {
            "Email": email,
            "Feedback": feedback_score,
            "Registered": registered
        }
    except ConnectionError as e:
        print(e)
Пример #15
0
from ebaysdk.trading import Connection
import sys
sys.path.append("/itemhut/pyebay/common/")
from common import *

from pprint import pprint

api = Connection(config_file='/itemhut/pyebay/ebay.yaml')


def verifyAddItem():
    """http://www.utilities-online.info/xmltojson/#.UXli2it4avc
    """

    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": "10000.0",
            "CategoryMappingAllowed": "true",
            "Country": "US",
            "ConditionID": "3000",
            "Currency": "USD",
            "DispatchTimeMax": "3",
            "ListingDuration": "Days_7",
            "ListingType": "Chinese",
            "PaymentMethods": "PayPal",
Пример #16
0
from ebaysdk.trading import Connection

if __name__ == '__main__':
    try:
        api = Connection(config_file='ebay.yaml')
    except ConnectionError as e:
        print(e)
        print(e.response.dict())
        log.error('Attempting to get an API object failed with %s', e)

    acitvelist = api.execute('GetMyeBaySelling', {
        'ActiveList': True,
        'DetailLevel': 'ReturnAll',
        'PageNumber': 1
    })
    print(acitvelist)
Пример #17
0
def get_connection(instance):
    print "Constructing eBay API instance for '{}'".format(instance)
    if instance == 'test':
        return Connection(domain='api.sandbox.ebay.com')
    else:
        raise ValueError("Don't recognise instance '{}'".format(instance))
Пример #18
0
from item import Item
from utilities import b_colors
import config
from ebaysdk.trading import Connection

API = Connection(config_file=config.yaml_location, debug=config.debug, siteid=config.site_id)


def start():
    print("\nFound {} possible listings\n".format(len(config.subfolders)))
    for x in config.subfolders:
        print("    + " + x)
    print("")
    for from_file in config.subfolders:
        create_item(from_file)


def create_item(from_file):
    title = str(raw_input("Enter title for listing: [{}]:   ".format(from_file)) or from_file)
    desc = str(
        raw_input("Enter description for listing: [{}...]  ".format(config.default_desc[:20])) or config.default_desc)
    price = str(raw_input("Enter price:   "))
    category = get_categories(title)
    images = config.parent_directory + "/" + from_file
    item = Item(title=title, desc=desc, price=price, category_id=category, img_dir=images, posted=False)
    if item.save() is not None:
        print("Successfully added item to local database.")
    else:
        raise Exception("Something went wrong when adding to the database")

Пример #19
0
from sqlalchemy.orm import sessionmaker

from schema import Base, Link, UPC
from secrets import (ACCESS_KEY, SECRET_KEY, ASSOCIATE_TAG, DEVID,
                     PRODUCTION_APPID, PRODUCTION_CERTID, PRODUCTION_TOKEN,
                     SANDBOX_APPID, SANDBOX_CERTID, SANDBOX_TOKEN)

engine = create_engine('sqlite:///sqlite3.db')
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()

amazon = AmazonAPI(ACCESS_KEY, SECRET_KEY, ASSOCIATE_TAG)
production = Connection(devid=DEVID,
                        appid=PRODUCTION_APPID,
                        certid=PRODUCTION_CERTID,
                        token=PRODUCTION_TOKEN,
                        config_file=None)
sandbox = Connection(domain='api.sandbox.ebay.com',
                     devid=DEVID,
                     appid=SANDBOX_APPID,
                     certid=SANDBOX_CERTID,
                     token=SANDBOX_TOKEN,
                     config_file=None)

SEARCH_INDEX = [
    'All', 'UnboxVideo', 'Appliances', 'MobileApps', 'ArtsAndCrafts',
    'Automotive', 'Baby', 'Beauty', 'Books', 'Music', 'Wireless', 'Fashion'
    'FashionBaby', 'FashionBoys', 'FashionGirls', 'FashionMen', 'FashionWomen'
    'Collectibles', 'PCHardware', 'MP3Downloads', 'Electronics', 'GiftCards',
    'Grocery', 'HealthPersonalCare', 'Industrial', 'KindleStore', 'Luggage',
Пример #20
0
def AddFixedPriceItemShoe(shoe_info_class, post_debug=True, ebay_debug=True):
    Variation_list = []
    for size in shoe_info_class.SIZES:
        Variation_list.append({
            "Quantity": "1",
            "StartPrice": str(shoe_info_class.PRICE),
            "VariationSpecifics": {
                "NameValueList": {
                    "Name": "US Shoe Size (Men's)",
                    "Value": str(size)
                }
            }
        })

    api = Connection(config_file="ebay.yaml", debug=True)
    request = {
        "Item": {
            "BuyerRequirementDetails": {
                "ShipToRegistrationCountry": True
            },
            "Title":
            str(shoe_info_class.BRAND + str(" ") + shoe_info_class.MODEL),
            "Country": "US",
            "Location": "USA",
            "Site": "US",
            "ConditionID": "1000",
            "PaymentMethods": "PayPal",
            "PictureDetails": {
                "PictureURL": shoe_info_class.PICTURES
            },
            "PayPalEmailAddress": "*****@*****.**",
            "PrimaryCategory": {
                "CategoryID": "24087"
            },
            "ProductListingDetails": {
                "BrandMPN": {
                    "Brand": str(shoe_info_class.BRAND),
                    "MPN": str(shoe_info_class.SKU)
                }
            },
            "Description": html_description(shoe_info_class),
            "ListingDuration": "Days_10",
            "StartPrice": str(shoe_info_class.PRICE),
            "Currency": "USD",
            "ReturnPolicy": {
                "ReturnsAcceptedOption": "ReturnsNotAccepted"
            },
            "ShippingDetails": {
                "ShippingServiceOptions": {
                    "FreeShipping": "True",
                    "ShippingService": "USPSMedia"
                },
                "ExcludeShipToLocation": "none"
            },
            "ItemSpecifics": {
                "NameValueList": [{
                    "Name": "Brand",
                    "Value": str(shoe_info_class.BRAND)
                }, {
                    "Name": "Style",
                    "Value": "Fashion Shoe"
                }]
            },
            "Variations": {
                "VariationSpecificsSet": {
                    "NameValueList": {
                        "Name":
                        "US Shoe Size (Men's)",
                        "Value": [
                            6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10.0, 10.5,
                            11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5,
                            15.0, 15.5, 16.0
                        ],
                    }
                },
                "Variation": Variation_list
            },
            "DispatchTimeMax": '5',
        }
    }

    output = api.execute("AddFixedPriceItem", request)

    ItemID = output.reply.ItemID
    if post_debug:
        display_info(shoe_info_class)
    return ItemID
Пример #21
0
 def connect_and_execute(self):
     ''''''
     self.api = Connection(config_file='ebay.yaml', domain='api.sandbox.ebay.com', debug=False)
Пример #22
0
#                     "FreeShipping": "True",
#                     "ShippingService": "USPSMedia"
#                 }
#             },
#             "DispatchTimeMax": "3"
#         }
#     }
#
# api.execute("AddItem", request)

#!/usr/bin/env python3
from ebaysdk.trading import Connection

if __name__ == '__main__':
    api = Connection(config_file="ebay.yaml",
                     domain="api.sandbox.ebay.com",
                     debug=True)
    request = {
        "Item": {
            # geography
            "Country": "JP",
            "Location": "Tokyo",
            "Site": "US",

            # payments
            "AutoPay": "True",
            "BestOfferDetails": {
                "BestOfferEnabled": "True",
            },
            # "CrossBorderTrade": "UK", # This costs $0.50: https://www.ebay.com/help/selling/fees-credits-invoices/selling-fees?id=4364
            "Currency": "USD",