Skip to main content

Parse recipe ingredients into structured data (name, quantity, units, preparation notes)

Project description

Ingredient Parser (Zestful Client)

PyPI CircleCI License

Overview

Parse recipe ingredient strings into structured data.

Examples

Parse a single ingredient

import json
import parse_ingredient

ingredient = parse_ingredient.parse('2 1/2 tablespoons finely chopped parsley')
print(json.dumps(ingredient.as_dict()))
{
  "quantity": 2.5,
  "unit": "tablespoon",
  "product": "parsley",
  "productSizeModifier": null,
  "preparationNotes": "finely chopped",
  "usdaInfo": {
      "category": "Vegetables and Vegetable Products",
      "description": "Parsley, fresh",
      "fdcId": "170416",
      "matchMethod": "exact"
  },
  "confidence": 0.9858154,
}

Parse multiple ingredients

import json
import parse_ingredient

ingredients = parse_ingredient.parse_multiple([
  '½ tsp brown sugar',
  '3 large Granny Smith apples'
  )
print(json.dumps(ingredients.as_dict()))
[
  {
    "ingredientRaw": "½ tsp brown sugar",
    "ingredientParsed": {
        "preparationNotes": "finely chopped",
        "product": "brown sugar",
        "productSizeModifier": null,
        "quantity": 0.5,
        "unit": "teaspoon",
        "usdaInfo": {
            "category": "Sweets",
            "description": "Sugars, brown",
            "fdcId": "168833",
            "matchMethod": "exact"
        },
        "confidence": 0.9857134,
    },
    "error": null,
  },
  {
      "ingredientRaw": "3 large Granny Smith apples",
      "ingredientParsed": {
          "preparationNotes": null,
          "product": "Granny Smith apples",
          "productSizeModifier": "large",
          "quantity": 3.0,
          "unit": null,
          "usdaInfo": {
              "category": "Fruits and Fruit Juices",
              "description": "Apples, raw, granny smith, with skin (Includes foods for USDA's Food Distribution Program)",
              "fdcId": "168203",
              "matchMethod": "exact"
          },
          "confidence": 0.9741028,
      },
      "error": null,
  }
]

Parse ingredients using RapidAPI

If you have a RapidAPI subscription to Zestful, you can use your API key as follows:

import json
import parse_ingredient

# Replace this with your key from RapidAPI
# https://rapidapi.com/zestfuldata/api/recipe-and-ingredient-analysis
RAPID_API_KEY = 'your-rapid-api-key'

client = parse_ingredient.client(rapid_api_key=RAPID_API_KEY)

ingredient = client.parse_ingredient('2 1/2 tablespoons finely chopped parsley')
print(json.dumps(ingredient.as_dict()))

Use private Zestful server

If you have a private Zestful ingredient parsing server as part of an Enterprise plan, you can use the library as follows:

import json
import parse_ingredient

ENDPOINT_URL = 'https://zestful.yourdomain.com'

client = parse_ingredient.client(endpoint_url=ENDPOINT_URL)

ingredient = client.parse_ingredient('2 1/2 tablespoons finely chopped parsley')
print(json.dumps(ingredient.as_dict()))

Installation

From pip

pip install parse-ingredient

From source

git clone https://github.com/mtlynch/zestful-client.git
cd zestful-client
pip install .

Full documentation

For full documentation of each result field, see the official Zestful API documentation.

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

zestful-parse-ingredient-0.0.2.tar.gz (4.0 kB view hashes)

Uploaded Source

Built Distribution

zestful_parse_ingredient-0.0.2-py3-none-any.whl (5.7 kB view hashes)

Uploaded Python 3

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