ws-yummly

A wrapper for the Yummly recipe API.

Usage no npm install needed!

<script type="module">
  import wsYummly from 'https://cdn.skypack.dev/ws-yummly';
</script>

README

Synopsis

A simple to use Yummly API wrapper for Nodejs.

Installation

$ npm install ws-yummly

Usage

    var Yummly = require("ws-yummly");

    Yummly.config({
        app_id : 'YOUR_APP_ID',
        app_key : 'YOUR_APP_KEY',
    });

API

getMeta(type, [display])

type: holiday, allergy, course, cuisine, diet, ingredient

display: clean, raw (default)

    Yummly.getMeta('diet', 'raw').then(function (meta) {
        console.log(meta);
    }).catch(function (error) {
        console.log(error);
    });

    # output
    [ { id: '388',
        shortDescription: 'Lacto vegetarian',
        longDescription: 'Lacto vegetarian',
        searchValue: '388^Lacto vegetarian',
        type: 'diet',
        localesAvailableIn: [ 'en-US' ]
        ....
        ....
    }]

maxTotalTimeInSeconds(number)

Maximum time in seconds it may take to prepare the meal

maxResults(number)

Maximum results from the API

start(number)

Start getting recipes from start number

minRating(number)

Minumum rating a recipe can have (1-5)

maxRating(number)

Maximum rating a recipe can have (1-5)

maxRating value will be ignored when lower then minRating

allowedIngredients(string or array)

for a list of allowed ingredients use:

    Yummly.getMeta('ingredients')

excludedIngredients(string or array)

for a list of allowed ingredients use:

    Yummly.getMeta('ingredients')

allowedAllergies(string or array)

for a list of possible values use:

    Yummly.getMeta('allergy')

excludedAllergies(string or array)

for a list of possible values use:

    Yummly.getMeta('allergy')

allowedDiets(string or array)

for a list of possible values use:

    Yummly.getMeta('diet')

excludedDiets(string or array)

for a list of possible values use:

    Yummly.getMeta('diet')

allowedCuisines(string or array)

for a list of possible values use:

    Yummly.getMeta('cuisine')

excludedCuisines(string or array)

for a list of possible values use:

    Yummly.getMeta('cuisine')

allowedCourses(string or array)

for a list of possible values use:

    Yummly.getMeta('course')

excludedCourses(string or array)

for a list of possible values use:

    Yummly.getMeta('course')

allowedHolidays(string or array)

for a list of possible values use:

    Yummly.getMeta('holiday')

excludedHolidays(string or array)

for a list of possible values use:

    Yummly.getMeta('holiday')

requirePictures(boolean)

Wheter or not the recipes must have a image attached

paginate(number)

Paginates the result array into chunks

    Yummly.query('pineapple').maxResults(40).paginate(10).get().then(function(resp){
        console.log(resp.matches); // 4 arrays within each 10 recipes
    });

getURL()

Returns the current generated url

    var url = Yummly.query('pineapple').maxResults(40).paginate(10).excludedHolidays('halloween').getURL();

    // url: https://api.yummly.com/v1/api/recipes?_app_id=YOUR_APP_ID&_app_key=YOUR_APP_KEY&q=pineapple&maxResult=40&excludedHoliday[]=holiday^holiday-halloween

getWithURL()

Returns the current generated url

    var url = https://api.yummly.com/v1/api/recipes?_app_id=YOUR_APP_ID&_app_key=YOUR_APP_KEY&q=pineapple&maxResult=10;

    Yummly.getWithURL(url).then(function(resp){
        console.log(resp);
    }));

    // url: https://api.yummly.com/v1/api/recipes?_app_id=YOUR_APP_ID&_app_key=YOUR_APP_KEY&q=pineapple&maxResult=40&excludedHoliday[]=holiday^holiday-halloween

getSettings()

Returns the current generated setting object

    var settings = Yummly.query('pineapple').maxResults(40).paginate(10).excludedHolidays('halloween').getURL();

    // settings: { maxResults: 40, paginate: 10, excludedHolidays: [ 'halloween' ] }

getDetails()

Returns details for recipes

    var recipes = [
        'Apple-Walnut-Cranberry-Salad-898353',
        'Heavenly-Strawberry_s-650499',
        'Chopped-Taco-Mason-Jar-Salad-1266468'
    ];

    Yummly.getDetails(recipes).then(function (resp) {
        resp.forEach(function (recipe) {
            console.log(recipe.name);
        });
    }).catch(function (error) {
        console.log(error);
    });

get()

Returns a promise with possible results

    Yummly.query('coconut').get().then(function (resp) {
        resp.forEach(function (recipe) {
            console.log(recipe.name);
        });
    }).catch(function (error) {
        console.log(error);
    });

Example

    Yummly.query('pineapple')
        .maxTotalTimeInSeconds(1400)
        .maxResults(20)
        .allowedDiets(['Pescetarian', 'Vegan'])
        .allowedCuisines(['asian'])
        .minRating(3)
        .get()
        .then(function(resp){
            resp.matches.forEach(function(recipe){
                console.log(recipe.recipeName);
            });
        });

        # Thai Shrimp and Pineapple Curry
        # Thai Pineapple Fried Rice
        # Asian Pineapple Sauce
        # Thai Pineapple Fried Rice
        # Asian Caramelized Pineapple
        # Thai Pineapple Fried Rice
        # ...