Skip to main content

Unified data acquisition across multiple grocery store sites

Project description

open-groceries

Unified data acquisition across multiple grocery store sites

Installation

python3 -m pip install open-groceries

Example Usage

from open_groceries import OpenGrocery

# Initialize adapter clients
client = OpenGrocery()

# Print locations near Times Square
print(client.locations("Times Square NYC"))

# Print search results for "beans"
print(client.search("beans"))

# Print search suggestions for "pot"
print(client.suggest("pot"))

API Documentation

OpenGrocery:

The OpenGrocery class is an aggregator for all included adapters. Function/constructor signatures are as follows:

  • OpenGrocery(features = ..., user_agent = ..., adapter_kwargs = ...)

    • features: Optional str[], list of adapter names to initialize.
    • user_agent: Optional str, user-agent string to pass to APIs.
    • adapter_kwargs: Optional {str: {str: any}}, mapping of adapter:{kwargs} for individual adapter kwargs
  • OpenGrocery().locations(near, include = ...) -> Location[]: Fetches locations near an address

    • near: Required str, address to query.
      • Example formats: "14620", "Times Square NYC", "Rochester Institute of Technology"
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
    • Returns Location[] in order of distance to specified address
  • OpenGrocery().set_nearest_stores(near, include = ...) -> None: Sets each adapter to its nearest store

    • near: Required str, address to query.
      • Example formats: "14620", "Times Square NYC", "Rochester Institute of Technology"
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
  • OpenGrocery().set_locations(locations) -> None: Sets each adapter to a specific store

    • locations: Required {str: Location}, mapping of adapter name to desired location. This function does not check whether the input location is valid for that adapter.
  • OpenGrocery().search(query, include = ...) -> GroceryItem[]: Searches adapters for a search query

    • query: Required str, search term to look for
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
    • Returns GroceryItem[] in order of similarity to the search term
  • OpenGrocery().adapter(adapter) -> GroceryAdapter | None: Utility function to return an initialized adapter

    • adapter: Required str, name of adapter to get
    • Returns specified GroceryAdapter if found, or None if not
  • OpenGrocery().suggest(term, include = ...) -> str[]: Gets autocompletion suggestions to search term

    • term: Required str, search term to suggest for
    • include: Optional str[], list of adapters to query. Skips any that aren't initialized
    • Returns str[] in order of similarity to search term

GroceryAdapter:

The GroceryAdapter class is the abstract parent of all included Adapters. It shoul not be initialized itself, but should instead be subclassed to create Adapters.

  • GroceryAdapter(user_agent = ...)

    • user_agent: Optional str, user agent header to send to APIs
  • GroceryAdapter().search_groceries(search) -> GroceryItem[]: Search for groceries

    • search: Required str, search term to look for
    • Returns GroceryItem[] in the order returned by the website
  • GroceryAdapter().get_grocery_item(id) -> GroceryItem: Gets a specific grocery item by ID

    • id: Required str, item ID to return
    • Returns GroceryItem returned by the website
  • GroceryAdapter().get_locations(near) -> Location[]: Gets store locations near an address

    • near: Required str, address to query.
      • Example formats: "14620", "Times Square NYC", "Rochester Institute of Technology"
    • Returns Location[] in the order returned by the website
  • GroceryAdapter().set_location(location) -> None: Sets preferred store location

    • location: Required Location, location to set
  • GroceryAdapter().suggest(search) -> str[]: Gets autocomplete suggestions for a search term

    • term: Required str, search term to suggest for
    • Returns str[] in order returned by the website

Supported Stores

Store Item Search Item Retrieval Location Search Location Filtering Autocomplete
Wegmans Full support [Long Term/Versioned API] Full support [Long Term/Versioned API] Full support [Medium Term/External Versioned API] Full Support [Long Term] Full support [Medium Term/External Versioned API]
Costco Adequate support [Medium Term/Site Parsing] Adequate support [Medium Term/Site Parsing] Full support [Medium Term/External Versioned API] Full Support [Long Term] Full support [Long Term/Versioned API]

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

open_groceries-0.1.2.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

open_groceries-0.1.2-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file open_groceries-0.1.2.tar.gz.

File metadata

  • Download URL: open_groceries-0.1.2.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.6 Linux/6.2.0-1015-azure

File hashes

Hashes for open_groceries-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5d229a5c2f2cdb46199527650242099a7ce1cabd626c383c5b409fcff2f27712
MD5 63e49657abb2f42bf0a094254c636735
BLAKE2b-256 aa8b4da44e35f899dd8e486cb929db73328f125bd42ce8b357c689f5d3734774

See more details on using hashes here.

File details

Details for the file open_groceries-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: open_groceries-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.6 Linux/6.2.0-1015-azure

File hashes

Hashes for open_groceries-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 01e6419a86257b873a2f4f7c499dcf8b1a4980b7460ab3496e6bef11f8bda5e7
MD5 1e0914ec07bd26ee2b153fa650bb58f1
BLAKE2b-256 1cc6754021f0dd0cac5ae1062bffaf50e6df96ba09c05707ee3160fa509cf431

See more details on using hashes here.

Supported by

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