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.
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...
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 >
Python3.9 was used for development, I believe that any Python3 version will be compatible.
See the requirements.txt for the dependencies.
Just run and all will be good.
pip install -r requirements.txtInitially one should run the reboot_timestamps.py script to reset all timestamps.
To generate a random meal idea run:
python main.pyThe project now includes a comprehensive test suite using pytest:
# Run all tests
pytest tests/
# Run with verbose output
pytest tests/ -vSee tests/README.md for detailed information about the test suite.
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 --helpPull 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.
Contributors names and contact info
Avishai Barnoy @avishai231
This project is licensed under the MIT License - see the LICENSE.md file for details.