Code Monkey home page Code Monkey logo

anylist's Introduction

๐Ÿ“‹ AnyList

node-current

a wrapper for AnyList's API (unofficial, reverse engineered)

Install

npm i anylist

Getting Started

Here's an example script (replace email and password with your credentials):

const AnyList = require('anylist');

const any = new AnyList({email: '[email protected]', password: 'password'});

any.on('lists-update', lists => {
  console.log('Lists were updated!');
});

any.login().then(async () => {
  await any.getLists();

  // Add new item to the Walmart list
  const walmart = any.getListByName('Walmart');

  let chips = any.createItem({name: 'Chips'});

  chips = await walmart.addItem(chips)

  // Check off added item
  chips.checked = true;
  // And change the quantity
  chips.quantity = '2';
  // Save updated item
  await chips.save();

  // Delete item
  await walmart.removeItem(chips);

  any.teardown();
});

Getting Started with Recipes

const AnyList = require('anylist');

const any = new AnyList({email: '[email protected]', password: 'password'});

any.login().then(async () => {
    const recipeName = 'Congee recipe';
    const testRecipe = await any.createRecipe(
        {
            name: recipeName,
            note: 'this is a test note',
            preparationSteps: ['# heading 1', 'this is preparation step 1'],
            servings: '2 servings as main dish',
            sourceName: 'serious eats',
            sourceUrl: 'https://seriouseats.com',
            scaleFactor: 1,
            rating: 5,
            ingredients: [{
                rawIngredient: '1 garlic, chopped',
                name: 'garlic',
                quantity: '1',
                note: 'chopped'
            }],
            nutritionalInfo: 'this is nutritional info',
            cookTime: 5 * 60, // seconds
            prepTime: 5 * 60, // seconds
            creationTimestamp: Date.now() / 1000,
            timestamp: Date.now() / 1000
        }
    );


    // Save test recipe
    await testRecipe.save();
    
    const collection = any.createRecipeCollection({ name: 'ONLINE RECIPES' })

    await collection.save();
    
    await collection.addRecipe(testRecipe.identifier);

    await collection.removeRecipe(testRecipe.identifier);
    
    // clean up / delete test recipe collection
    await collection.delete();

    // cleanup / delete test recipe
    await testRecipe.delete(); 


    any.teardown();
});

Notes/Tips

  • There is much more functionality in the AnyList API that is not captured in this package, I just implemented the functions that I would be using. If there is functionality missing that you want, please open a PR and I'm happy to merge it in.
    • (This means that you can't currently add/remove/update lists.)
  • When adding new items, you should reuse existing, checked-off items if possible like the official clients do. Search the list by the item name with list.getItemByName('item-name') to see if it exists before adding a new instance.

๐Ÿ“– Docs

Documentation

anylist's People

Contributors

ajorpheus avatar brianespinoza avatar codetheweb avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.