Skip to content

AvishaiBarnoy/DeepCook

Repository files navigation

DeepCook Meal Suggestion Engine

DeepCook is a Python program that randomly suggests ideas to prepare for dinner, so you can have Class with Zero Strain.

DeepCook, developed by ABN electronics was the first computer to defeat a human competitor in MasterChef.

-- Neria Baris

Feel free to help in anyway you wish, even adding more meals, recipe suggestions, etc.

Description

Background

I love cooking but I also hate deciding what to make for middle-week dinners. Hence, this project was born. It is supposed to randomly give a suggestion for a meal to prepare for dinner. I created a meal database (saved in the data/meal_list.csv file) and added some features to each meal. Each idea is a meal I found that worked for me and my family, or something I wanted to try but never had the chance. Every meal is ranked according to my own preferances.

Fun fact: I am a crazy person who develops in vim...

Features

Currently, the main engine will randomly choose a meal from data/meals_list.csv. There are several options implemented accessible by running main --help:

  • Weighted Selection (--rank): Use preference rankings to weight random selection
  • Take-away Filtering (--ta/--no-ta): Include/exclude or only show take-away options
  • Recently Made Filter (--last-made N): Exclude meals prepared in the past N days (recommended: 3-5)
  • Kosher Filtering (--kosher): Filter by kosher type (parve, milchik, fleisch, nonkosher)
  • Diet Filtering (--diet): Filter by dietary preference (vegan, vegetarian, glutenfree, keto, any)
  • Time-aware Selection: After 8 PM, automatically filters out meals with long preparation times
  • Midnight Protection: Prevents complex meal suggestions between midnight and 5 AM
  • Meal Addition (--inp): Interactively add new meals to the database
  • Mock Mode (--mock): Test the app without logging to the database

Currently ranking is only based on my own preferences for meals, but in the future a quick reranking option will be added, also an easy meal insertion to the db will be implemented.

< one day, here you, brave reader, will find a thorough and in-depth description of this project >

Getting Started

Dependencies

Python3.9 was used for development, I believe that any Python3 version will be compatible.

See the requirements.txt for the dependencies.

Installing

Just run and all will be good.

pip install -r requirements.txt

Executing Program

Initially one should run the reboot_timestamps.py script to reset all timestamps.

To generate a random meal idea run:

python main.py

Running Tests

The project now includes a comprehensive test suite using pytest:

# Run all tests
pytest tests/

# Run with verbose output
pytest tests/ -v

See tests/README.md for detailed information about the test suite.

Help

In order to read the help section run (which is a fun bonus of implementing a cli), this will also give you current CLI methods implemented.

python main.py --help

Contributions

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Also, don't forget to update the changes in the CHANGELOG.md file.

Please make sure to write tests as appropriate, I (Avishai) didn't do the proper and appropriate work so there are currently no tests.

Please don't hesitate to open an issue or pull request. You can also send me a message on Twitter.

Author

Contributors names and contact info

Avishai Barnoy @avishai231

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

Dinner Recommendation System

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors