Rockett - проект программного обеспечения для планирования рецептов, направленный на сокращение пищевых отходов.

Rockett — это проект, созданный для того, чтобы побудить людей создавать рецепты на основе того, что у них есть (в холодильнике или в кладовой). Это простое приложение, в котором вы просто вводите, какой основной ингредиент вы хотите использовать, добавляете любые дополнительные ингредиенты, которые вы хотите включить в блюдо, и Рокетт будет искать в Интернете рецепты, объединяя информацию на одной краткой странице, где вы могли бы вдохновиться на что-нибудь приготовить. Вдохновением для этого проекта является огромная проблема пищевых отходов. В США 30–40% продуктов питания. В Великобритании было зарегистрировано более 6,6 млн тонн пищевых отходов (70% из них происходят из домашних хозяйств). В связи с этим и возникла идея. Что, если бы у людей было приложение, в котором они могли бы сказать, какие продукты питания у них есть в холодильнике/кладовой, и можно было бы вернуть подборку возможных рецептов, из которых они могли бы черпать вдохновение для своего следующего приема пищи? Вошел Рокетт.

Проект был написан на Python с графической библиотекой Kivy, которая использовалась для создания приложения. Библиотека Recipe Scrapers использовалась для облегчения веб-скрейпинга сайтов BBC GoodFood (однако есть несколько точек данных, которые требовали кодирования пользовательских парсеров).

Первоначально это была идея, сделанная для ежегодного конкурса Enviro Pi, однако впоследствии было решено, что было бы интересно превратить ее в приложение, чтобы сделать его более доступным для людей.

Основная функция Rockett — парсер веб-страниц. В файле существует большой файл csv, содержащий базу данных различных продуктов (выбранных из-за того, что они наиболее распространены в домашних хозяйствах), которые были сопоставлены с коллекцией рецептов BBC Goodfood на основе продукта питания. (BBC GoodFood — это веб-сайт с большим каталогом рецептов).

Когда пользователь вводил продукт питания в раздел «основной ингредиент», веб-скребок извлекал конкретный продукт из текста, а затем очищал страницу BBCGoodfood в поисках рецептов.

Конкретной информацией, которую мы извлекали из каждого рецепта, были ингредиенты, изображение блюда и инструкции, которые затем были объединены в базовую страницу, где пользователь мог просмотреть рецепт. (Внизу вы можете просмотреть пример страницы рецептов)

Основная проблема с этим проектом заключалась в том, что парсеру требовалось все больше времени для поиска ссылки BBC Goodfood и извлечения полезных данных. Это приводило к ожиданиям до 2 минут на поиск (что на первый взгляд кажется не таким уж плохим, но на самом деле было неэффективным). Была предпринята попытка решить эту проблему с помощью многопоточности, однако это не сработало из-за трудностей с потоковой передачей нескольких алгоритмов и обменом данными между экранами Kivy (экраны в kivy представлены как объекты в файлах python, и становится все труднее обмениваться данными с объект в файле python в файл kivy, где был отдельный код для графики приложения).

Простой способ решить эту проблему заключался в том, чтобы парсер просматривал меньше данных, поэтому конкретные ссылки с наименьшим количеством ингредиентов и наименьшим временем приготовления еды (два фактора, которые обычно означали, что это была более простая еда) были выборочно выбраны, чтобы быть полностью очищенными. Это значительно сократило время, затрачиваемое на запуск веб-скребка, но все еще были случаи, когда поиск занимал больше минуты.

В целом, этот проект успешно достиг бета-фазы, где его основная функция очевидна, и его можно протестировать как приложение. Не исключено, что проект будет продолжен и в конечном итоге будет выпущен в магазине приложений, однако на данный момент идея проекта находится только в стадии публикации.