Skip to main content

Wraps the eBay REST APIs.

Project description

ebay_rest

A Python 3 pip package that wraps eBay’s REST APIs.

Installation

Use the package manager pip to install ebay_rest.

pip install ebay_rest    # Use pip3 if your computer also has Python 2 installed.

If you are one of the few people who want ebay_rest to get user tokens, do the following.

Install Chrome.

pip install selenium    # Use pip3 if your computer also has Python 2 installed.

Install Webdriver, aka Chromedriver, for your version of Chrome .

Here is a method for installing Webdriver/Chromedriver on macOS and tweaking security to permit it.

Install HomeBrew

brew install chromedriver
cd /usr/local/Caskroom/chromedriver

cd to the subdirectory that matches your Chrome version, e.g., 91.0.4472.101

xattr -d com.apple.quarantine chromedriver

Setup

Follow the instructions here.

Usage

from ebay_rest import API, DateTime, Error, Reference

print(f"eBay's official date and time is {DateTime.to_string(DateTime.now())}.\n")

print("All valid eBay global id values, also known as site ids.")
print(Reference.get_global_id_values(), '\n')

try:
    api = API(application='production_1', user='production_1', header='US')
except Error as error:
    print(f'Error {error.number} is {error.reason}  {error.detail}.\n')
else:
    try:
        print("The five least expensive iPhone things now for sale on-eBay:")        
        for record in api.buy_browse_search(q='iPhone', sort='price', limit=5):
            if 'record' not in record:
                pass    # TODO Refer to non-records, they contain optimization information.
            else:
                item = record['record']
                print(f"item id: {item['item_id']} {item['item_web_url']}")
    except Error as error:
        print(f'Error {error.number} is {error.reason} {error.detail}.\n')
    else:
        pass

print("\nClass documentation:")
print(help(API))    # Over a hundred methods are available!
print(help(DateTime))
print(help(Error))
print(help(Reference))

FAQ - Frequently Asked Questions

Question: How are API results organized?

Answer:

  • Elemental information is stored in dates, integers, strings and other basic built-in types.
  • Dictionaries contain related elements.
  • Lists contain information organized repetitively; expect zero or more contents.
  • Dicts and Lists may be nested.
  • eBay classifies data as optional or mandatory. Optional elements, dicts or lists are omitted. Manditories have a None value.

Q: How are paged calls/results handled?

A: A simple generator is implemented.

  • To be clear, "Paging" is eBay's term for repeating a call while advancing a record offset to get all records.
  • eBay documentation has the word "Page" in the return type of paging calls.
  • Do NOT supply a record "offset" parameter when making a paging call.
  • The "limit" parameter is repurposed to control how many records from the entire set you want.
  • To get all possible records, don't supply a limit.
  • eBay imposes a hard limit on some calls, typically 10,000 records. Use filters to help keep below the limit. Use try-except to handle going over.
  • Avoid exhausting memory by making the call within a "for" loop.

Q: Can the browser pop-up be stopped?

A: Reusing the result of the browser pop-up is possible. After running your program, check your terminal/console or info level logger.

Q: Why is eBay giving an "Internal Error" or "Internal Server Error"?

A: Rapidly repeating an API call with the same parameter values can trigger this.

Q: Parallelism, is it safe to do treading or multiprocessing?

A: Yes, for treading. Multiprocessing is unknown, help wanted.

Q: How to optimize API calls?

A: Prioritized, do the first things first.

  1. Cache results to avoid repeating calls with identical parameter values.
  2. Some calls have filtering options; omit unneeded data.
  3. When the call returns a list, make the call in a "for" loop.
  4. Use threading to make calls in parallel but don't exhaust RAM.
  5. Use multiprocessing. -- Multiprocessing support is a goal. -- A safe workaround is to concurrently run copies of your program and divide the work among each.
  6. Reuse the API object.
  7. Switch to a faster internet connection.
  8. Switch to computer with faster cores.

Contributing

  • Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
  • Follow Uncle Bob's SOLID principles; see a text description & video tutorial.
  • Note the error number guide documented in the Error class definition.
  • Please make sure to update unit tests as appropriate.

Legal

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ebay_rest-0.0.15.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ebay_rest-0.0.15-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

File details

Details for the file ebay_rest-0.0.15.tar.gz.

File metadata

  • Download URL: ebay_rest-0.0.15.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.3

File hashes

Hashes for ebay_rest-0.0.15.tar.gz
Algorithm Hash digest
SHA256 294d02a65c3b9a178a0682eb0ff08c4541ada236700f908b152f4218d3f809a4
MD5 2caac7ed5ba02bf3fc4a748c793a5c18
BLAKE2b-256 c76ccb2ffee75c5019b4d30bcbd29f2db3ac7eb91bf20f235dd6df0672cd71a6

See more details on using hashes here.

File details

Details for the file ebay_rest-0.0.15-py3-none-any.whl.

File metadata

  • Download URL: ebay_rest-0.0.15-py3-none-any.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.3

File hashes

Hashes for ebay_rest-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 5d4001c9fb1fcda70e518fce89919911d48e463c3d6b0d1639d3dc2c16c57a41
MD5 a9a074f0611e348a047ca57ac6043c82
BLAKE2b-256 882e6385f2288e9ad225765b03a3503044a189a15aa57b3e7bc1f8391d16d049

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page