Add ingredient scaling

This commit is contained in:
Matteo Settenvini 2022-08-20 11:03:54 +02:00
parent bbcb32b119
commit d1803a16c6
Signed by: matteo
GPG Key ID: 8576CC1AD97D42DF
3 changed files with 36 additions and 23 deletions

View File

@ -114,13 +114,13 @@
"2022-04-23","sabato",, "2022-04-23","sabato",,
"2022-04-24","domenica","https://ricette.giallozafferano.it/Torta-Pasqualina.html", "2022-04-24","domenica","https://ricette.giallozafferano.it/Torta-Pasqualina.html",
"2022-04-25","lunedì",, "2022-04-25","lunedì",,
"2022-04-26","martedì",, "2022-04-26","martedì",,"https://ricette.giallozafferano.it/Fusilli-con-crema-di-piselli-e-pecorino.html"
"2022-04-27","mercoledì",,"https://ricette.giallozafferano.it/Orata-al-forno.html" "2022-04-27","mercoledì",,"https://ricette.giallozafferano.it/Orata-al-forno.html"
"2022-04-28","giovedì",, "2022-04-28","giovedì",,
"2022-04-29","venerdì",,"https://ricette.giallozafferano.it/Cordon-bleu-di-melanzane.html" "2022-04-29","venerdì",,"https://ricette.giallozafferano.it/Cordon-bleu-di-melanzane.html"
"2022-04-30","sabato",,"https://ricette.giallozafferano.it/Hamburger-di-ceci.html" "2022-04-30","sabato",,"https://ricette.giallozafferano.it/Hamburger-di-ceci.html"
"2022-05-01","domenica",, "2022-05-01","domenica",,
"2022-05-02","lunedì",, "2022-05-02","lunedì",,"https://ricette.giallozafferano.it/Pasta-panna-e-asparagi.html"
"2022-05-03","martedì",, "2022-05-03","martedì",,
"2022-05-04","mercoledì",, "2022-05-04","mercoledì",,
"2022-05-05","giovedì",,"https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html" "2022-05-05","giovedì",,"https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html"
@ -132,7 +132,7 @@
"2022-05-11","mercoledì",,"https://ricette.giallozafferano.it/Mezze-maniche-al-tonno.html" "2022-05-11","mercoledì",,"https://ricette.giallozafferano.it/Mezze-maniche-al-tonno.html"
"2022-05-12","giovedì",, "2022-05-12","giovedì",,
"2022-05-13","venerdì",,"https://ricette.giallozafferano.it/Spiedini-di-pollo.html" "2022-05-13","venerdì",,"https://ricette.giallozafferano.it/Spiedini-di-pollo.html"
"2022-05-14","sabato",, "2022-05-14","sabato",,"https://ricette.giallozafferano.it/Fusilli-con-crema-di-piselli-e-pecorino.html"
"2022-05-15","domenica",, "2022-05-15","domenica",,
"2022-05-16","lunedì",, "2022-05-16","lunedì",,
"2022-05-17","martedì",, "2022-05-17","martedì",,
@ -169,15 +169,15 @@
"2022-06-17","venerdì",,"https://ricette.giallozafferano.it/Salmorejo.html" "2022-06-17","venerdì",,"https://ricette.giallozafferano.it/Salmorejo.html"
"2022-06-18","sabato","https://ricette.giallozafferano.it/Insalata-di-ceci-estiva.html", "2022-06-18","sabato","https://ricette.giallozafferano.it/Insalata-di-ceci-estiva.html",
"2022-06-19","domenica",, "2022-06-19","domenica",,
"2022-06-20","lunedì",, "2022-06-20","lunedì",,"https://ricette.giallozafferano.it/Fusilli-con-crema-di-piselli-e-pecorino.html"
"2022-06-21","martedì",, "2022-06-21","martedì",,
"2022-06-22","mercoledì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html" "2022-06-22","mercoledì",,
"2022-06-23","giovedì",, "2022-06-23","giovedì",,"https://ricette.giallozafferano.it/Riso-saltato-con-tonno.html"
"2022-06-24","venerdì",, "2022-06-24","venerdì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html"
"2022-06-25","sabato","https://ricette.giallozafferano.it/Orata-al-forno.html", "2022-06-25","sabato","https://ricette.giallozafferano.it/Orata-al-forno.html",
"2022-06-26","domenica",, "2022-06-26","domenica",,
"2022-06-27","lunedì",,"https://ricette.giallozafferano.it/Spaghetti-poveri.html" "2022-06-27","lunedì",,"https://ricette.giallozafferano.it/Spaghetti-poveri.html"
"2022-06-28","martedì",, "2022-06-28","martedì",,"https://ricette.giallozafferano.it/Insalata-di-orzo-con-pesto-di-rucola-fagiolini-e-zucchine.html"
"2022-06-29","mercoledì",,"https://ricette.giallozafferano.it/Insalata-Shirazi.html" "2022-06-29","mercoledì",,"https://ricette.giallozafferano.it/Insalata-Shirazi.html"
"2022-06-30","giovedì",,"https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html" "2022-06-30","giovedì",,"https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html"
"2022-07-01","venerdì",, "2022-07-01","venerdì",,
@ -201,13 +201,13 @@
"2022-07-19","martedì",,"https://ricette.giallozafferano.it/Verdure-gratinate-al-forno.html" "2022-07-19","martedì",,"https://ricette.giallozafferano.it/Verdure-gratinate-al-forno.html"
"2022-07-20","mercoledì",, "2022-07-20","mercoledì",,
"2022-07-21","giovedì",,"https://ricette.giallozafferano.it/Insalata-di-pasta-Mediterranea.html" "2022-07-21","giovedì",,"https://ricette.giallozafferano.it/Insalata-di-pasta-Mediterranea.html"
"2022-07-22","venerdì",, "2022-07-22","venerdì",,"https://ricette.giallozafferano.it/Riso-saltato-con-tonno.html"
"2022-07-23","sabato",,"https://ricette.giallozafferano.it/Cocotte-di-quinoa.html" "2022-07-23","sabato",,"https://ricette.giallozafferano.it/Cocotte-di-quinoa.html"
"2022-07-24","domenica",, "2022-07-24","domenica",,
"2022-07-25","lunedì",,"https://ricette.giallozafferano.it/Tempeh-alle-verdure.html" "2022-07-25","lunedì",,"https://ricette.giallozafferano.it/Tempeh-alle-verdure.html"
"2022-07-26","martedì",,"https://ricette.giallozafferano.it/Spiedini-di-pollo.html" "2022-07-26","martedì",,"https://ricette.giallozafferano.it/Spiedini-di-pollo.html"
"2022-07-27","mercoledì",,"https://ricette.giallozafferano.it/Pasta-con-crema-di-peperoni.html" "2022-07-27","mercoledì",,"https://ricette.giallozafferano.it/Pasta-con-crema-di-peperoni.html"
"2022-07-28","giovedì",, "2022-07-28","giovedì",,"https://ricette.giallozafferano.it/Insalata-di-orzo-con-pesto-di-rucola-fagiolini-e-zucchine.html"
"2022-07-29","venerdì",,"https://ricette.giallozafferano.it/Orata-al-forno.html" "2022-07-29","venerdì",,"https://ricette.giallozafferano.it/Orata-al-forno.html"
"2022-07-30","sabato",, "2022-07-30","sabato",,
"2022-07-31","domenica",, "2022-07-31","domenica",,
@ -231,22 +231,22 @@
"2022-08-18","giovedì",,"https://ricette.giallozafferano.it/Spaghetti-poveri.html" "2022-08-18","giovedì",,"https://ricette.giallozafferano.it/Spaghetti-poveri.html"
"2022-08-19","venerdì",,"https://ricette.giallozafferano.it/Bocconcini-di-pollo-con-yogurt-e-curcuma.html" "2022-08-19","venerdì",,"https://ricette.giallozafferano.it/Bocconcini-di-pollo-con-yogurt-e-curcuma.html"
"2022-08-20","sabato",,"https://ricette.giallozafferano.it/Salmorejo.html" "2022-08-20","sabato",,"https://ricette.giallozafferano.it/Salmorejo.html"
"2022-08-21","domenica",, "2022-08-21","domenica","https://ricette.giallozafferano.it/Scaloppine-in-rosa.html",
"2022-08-22","lunedì",,"https://ricette.giallozafferano.it/Insalata-di-quinoa-alla-greca.html" "2022-08-22","lunedì",,"https://ricette.giallozafferano.it/Insalata-di-quinoa-alla-greca.html"
"2022-08-23","martedì",, "2022-08-23","martedì",,"https://ricette.giallozafferano.it/Omelette-caprese.html"
"2022-08-24","mercoledì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html" "2022-08-24","mercoledì",,"https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html"
"2022-08-25","giovedì",, "2022-08-25","giovedì",,"https://ricette.giallozafferano.it/Braciole-in-salsa-all-arancia.html"
"2022-08-26","venerdì",,"https://ricette.giallozafferano.it/Spiedini-di-pollo.html" "2022-08-26","venerdì",,"https://ricette.giallozafferano.it/Pasta-ricotta-e-noci.html"
"2022-08-27","sabato","https://ricette.giallozafferano.it/Orata-al-forno.html", "2022-08-27","sabato","https://ricette.giallozafferano.it/Orata-al-forno.html","https://ricette.giallozafferano.it/Spiedini-di-pollo.html"
"2022-08-28","domenica",, "2022-08-28","domenica",,
"2022-08-29","lunedì",, "2022-08-29","lunedì",,"https://ricette.giallozafferano.it/Riso-saltato-con-tonno.html"
"2022-08-30","martedì",,"https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html" "2022-08-30","martedì",,"https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html"
"2022-08-31","mercoledì",,"https://ricette.giallozafferano.it/Tempeh-alle-verdure.html" "2022-08-31","mercoledì",,"https://ricette.giallozafferano.it/Tempeh-alle-verdure.html"
"2022-09-01","giovedì",, "2022-09-01","giovedì",,"https://ricette.giallozafferano.it/Insalata-di-orzo-con-pesto-di-rucola-fagiolini-e-zucchine.html"
"2022-09-02","venerdì",,"https://ricette.giallozafferano.it/Petto-di-pollo-ai-peperoni.html" "2022-09-02","venerdì",,"https://ricette.giallozafferano.it/Petto-di-pollo-ai-peperoni.html"
"2022-09-03","sabato",, "2022-09-03","sabato",,
"2022-09-04","domenica",, "2022-09-04","domenica",,
"2022-09-05","lunedì",, "2022-09-05","lunedì",,"https://ricette.giallozafferano.it/Pasta-ricotta-e-noci.html"
"2022-09-06","martedì",, "2022-09-06","martedì",,
"2022-09-07","mercoledì",, "2022-09-07","mercoledì",,
"2022-09-08","giovedì",,"https://ricette.giallozafferano.it/Pasta-con-le-melanzane.html" "2022-09-08","giovedì",,"https://ricette.giallozafferano.it/Pasta-con-le-melanzane.html"
@ -287,7 +287,7 @@
"2022-10-13","giovedì",,"https://ricette.giallozafferano.it/Maccheroncini-al-fume.html" "2022-10-13","giovedì",,"https://ricette.giallozafferano.it/Maccheroncini-al-fume.html"
"2022-10-14","venerdì",,"https://ricette.giallozafferano.it/Polpette-al-sugo.html" "2022-10-14","venerdì",,"https://ricette.giallozafferano.it/Polpette-al-sugo.html"
"2022-10-15","sabato",,"https://ricette.giallozafferano.it/Ratatouille.html" "2022-10-15","sabato",,"https://ricette.giallozafferano.it/Ratatouille.html"
"2022-10-16","domenica",, "2022-10-16","domenica",,"https://ricette.giallozafferano.it/Pasta-ricotta-e-noci.html"
"2022-10-17","lunedì",, "2022-10-17","lunedì",,
"2022-10-18","martedì",, "2022-10-18","martedì",,
"2022-10-19","mercoledì",,"https://ricette.giallozafferano.it/Scaloppine-ai-funghi.html" "2022-10-19","mercoledì",,"https://ricette.giallozafferano.it/Scaloppine-ai-funghi.html"
@ -317,7 +317,7 @@
"2022-11-12","sabato",,"https://ricette.giallozafferano.it/Chili-con-carne.html" "2022-11-12","sabato",,"https://ricette.giallozafferano.it/Chili-con-carne.html"
"2022-11-13","domenica",, "2022-11-13","domenica",,
"2022-11-14","lunedì",, "2022-11-14","lunedì",,
"2022-11-15","martedì",, "2022-11-15","martedì",,"https://ricette.giallozafferano.it/Lenticchie-e-salsiccia.html"
"2022-11-16","mercoledì",, "2022-11-16","mercoledì",,
"2022-11-17","giovedì",, "2022-11-17","giovedì",,
"2022-11-18","venerdì",,"https://ricette.giallozafferano.it/Torta-rustica.html" "2022-11-18","venerdì",,"https://ricette.giallozafferano.it/Torta-rustica.html"
@ -354,7 +354,7 @@
"2022-12-19","lunedì",, "2022-12-19","lunedì",,
"2022-12-20","martedì",, "2022-12-20","martedì",,
"2022-12-21","mercoledì",, "2022-12-21","mercoledì",,
"2022-12-22","giovedì",, "2022-12-22","giovedì",,"https://ricette.giallozafferano.it/Lenticchie-e-salsiccia.html"
"2022-12-23","venerdì",, "2022-12-23","venerdì",,
"2022-12-24","sabato",, "2022-12-24","sabato",,
"2022-12-25","domenica","https://ricette.giallozafferano.it/Filetto-in-crosta.html", "2022-12-25","domenica","https://ricette.giallozafferano.it/Filetto-in-crosta.html",

1 day wday lunch dinner
114 2022-04-23 sabato
115 2022-04-24 domenica https://ricette.giallozafferano.it/Torta-Pasqualina.html
116 2022-04-25 lunedì
117 2022-04-26 martedì https://ricette.giallozafferano.it/Fusilli-con-crema-di-piselli-e-pecorino.html
118 2022-04-27 mercoledì https://ricette.giallozafferano.it/Orata-al-forno.html
119 2022-04-28 giovedì
120 2022-04-29 venerdì https://ricette.giallozafferano.it/Cordon-bleu-di-melanzane.html
121 2022-04-30 sabato https://ricette.giallozafferano.it/Hamburger-di-ceci.html
122 2022-05-01 domenica
123 2022-05-02 lunedì https://ricette.giallozafferano.it/Pasta-panna-e-asparagi.html
124 2022-05-03 martedì
125 2022-05-04 mercoledì
126 2022-05-05 giovedì https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html
132 2022-05-11 mercoledì https://ricette.giallozafferano.it/Mezze-maniche-al-tonno.html
133 2022-05-12 giovedì
134 2022-05-13 venerdì https://ricette.giallozafferano.it/Spiedini-di-pollo.html
135 2022-05-14 sabato https://ricette.giallozafferano.it/Fusilli-con-crema-di-piselli-e-pecorino.html
136 2022-05-15 domenica
137 2022-05-16 lunedì
138 2022-05-17 martedì
169 2022-06-17 venerdì https://ricette.giallozafferano.it/Salmorejo.html
170 2022-06-18 sabato https://ricette.giallozafferano.it/Insalata-di-ceci-estiva.html
171 2022-06-19 domenica
172 2022-06-20 lunedì https://ricette.giallozafferano.it/Fusilli-con-crema-di-piselli-e-pecorino.html
173 2022-06-21 martedì
174 2022-06-22 mercoledì https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html
175 2022-06-23 giovedì https://ricette.giallozafferano.it/Riso-saltato-con-tonno.html
176 2022-06-24 venerdì https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html
177 2022-06-25 sabato https://ricette.giallozafferano.it/Orata-al-forno.html
178 2022-06-26 domenica
179 2022-06-27 lunedì https://ricette.giallozafferano.it/Spaghetti-poveri.html
180 2022-06-28 martedì https://ricette.giallozafferano.it/Insalata-di-orzo-con-pesto-di-rucola-fagiolini-e-zucchine.html
181 2022-06-29 mercoledì https://ricette.giallozafferano.it/Insalata-Shirazi.html
182 2022-06-30 giovedì https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html
183 2022-07-01 venerdì
201 2022-07-19 martedì https://ricette.giallozafferano.it/Verdure-gratinate-al-forno.html
202 2022-07-20 mercoledì
203 2022-07-21 giovedì https://ricette.giallozafferano.it/Insalata-di-pasta-Mediterranea.html
204 2022-07-22 venerdì https://ricette.giallozafferano.it/Riso-saltato-con-tonno.html
205 2022-07-23 sabato https://ricette.giallozafferano.it/Cocotte-di-quinoa.html
206 2022-07-24 domenica
207 2022-07-25 lunedì https://ricette.giallozafferano.it/Tempeh-alle-verdure.html
208 2022-07-26 martedì https://ricette.giallozafferano.it/Spiedini-di-pollo.html
209 2022-07-27 mercoledì https://ricette.giallozafferano.it/Pasta-con-crema-di-peperoni.html
210 2022-07-28 giovedì https://ricette.giallozafferano.it/Insalata-di-orzo-con-pesto-di-rucola-fagiolini-e-zucchine.html
211 2022-07-29 venerdì https://ricette.giallozafferano.it/Orata-al-forno.html
212 2022-07-30 sabato
213 2022-07-31 domenica
231 2022-08-18 giovedì https://ricette.giallozafferano.it/Spaghetti-poveri.html
232 2022-08-19 venerdì https://ricette.giallozafferano.it/Bocconcini-di-pollo-con-yogurt-e-curcuma.html
233 2022-08-20 sabato https://ricette.giallozafferano.it/Salmorejo.html
234 2022-08-21 domenica https://ricette.giallozafferano.it/Scaloppine-in-rosa.html
235 2022-08-22 lunedì https://ricette.giallozafferano.it/Insalata-di-quinoa-alla-greca.html
236 2022-08-23 martedì https://ricette.giallozafferano.it/Omelette-caprese.html
237 2022-08-24 mercoledì https://ricette.giallozafferano.it/Pasta-fredda-con-pesto-senz-aglio.html
238 2022-08-25 giovedì https://ricette.giallozafferano.it/Braciole-in-salsa-all-arancia.html
239 2022-08-26 venerdì https://ricette.giallozafferano.it/Spiedini-di-pollo.html https://ricette.giallozafferano.it/Pasta-ricotta-e-noci.html
240 2022-08-27 sabato https://ricette.giallozafferano.it/Orata-al-forno.html https://ricette.giallozafferano.it/Spiedini-di-pollo.html
241 2022-08-28 domenica
242 2022-08-29 lunedì https://ricette.giallozafferano.it/Riso-saltato-con-tonno.html
243 2022-08-30 martedì https://ricette.giallozafferano.it/Scaloppine-saporite-con-cotto-e-formaggio.html
244 2022-08-31 mercoledì https://ricette.giallozafferano.it/Tempeh-alle-verdure.html
245 2022-09-01 giovedì https://ricette.giallozafferano.it/Insalata-di-orzo-con-pesto-di-rucola-fagiolini-e-zucchine.html
246 2022-09-02 venerdì https://ricette.giallozafferano.it/Petto-di-pollo-ai-peperoni.html
247 2022-09-03 sabato
248 2022-09-04 domenica
249 2022-09-05 lunedì https://ricette.giallozafferano.it/Pasta-ricotta-e-noci.html
250 2022-09-06 martedì
251 2022-09-07 mercoledì
252 2022-09-08 giovedì https://ricette.giallozafferano.it/Pasta-con-le-melanzane.html
287 2022-10-13 giovedì https://ricette.giallozafferano.it/Maccheroncini-al-fume.html
288 2022-10-14 venerdì https://ricette.giallozafferano.it/Polpette-al-sugo.html
289 2022-10-15 sabato https://ricette.giallozafferano.it/Ratatouille.html
290 2022-10-16 domenica https://ricette.giallozafferano.it/Pasta-ricotta-e-noci.html
291 2022-10-17 lunedì
292 2022-10-18 martedì
293 2022-10-19 mercoledì https://ricette.giallozafferano.it/Scaloppine-ai-funghi.html
317 2022-11-12 sabato https://ricette.giallozafferano.it/Chili-con-carne.html
318 2022-11-13 domenica
319 2022-11-14 lunedì
320 2022-11-15 martedì https://ricette.giallozafferano.it/Lenticchie-e-salsiccia.html
321 2022-11-16 mercoledì
322 2022-11-17 giovedì
323 2022-11-18 venerdì https://ricette.giallozafferano.it/Torta-rustica.html
354 2022-12-19 lunedì
355 2022-12-20 martedì
356 2022-12-21 mercoledì
357 2022-12-22 giovedì https://ricette.giallozafferano.it/Lenticchie-e-salsiccia.html
358 2022-12-23 venerdì
359 2022-12-24 sabato
360 2022-12-25 domenica https://ricette.giallozafferano.it/Filetto-in-crosta.html

View File

@ -34,7 +34,9 @@ pub async fn with(
}; };
let ids = map_events_to_recipe_ids(api_client, calendar_name, &date_range).await?; let ids = map_events_to_recipe_ids(api_client, calendar_name, &date_range).await?;
let ingredients = get_ingredients(api_client, ids).await?;
// TODO: make required_yield configurable!
let ingredients = get_ingredients(api_client, ids, 4.0).await?;
let ingredients = merge_ingredients(ingredients); let ingredients = merge_ingredients(ingredients);
let md = prepare_grocery_list(&date_range, &ingredients)?; let md = prepare_grocery_list(&date_range, &ingredients)?;
log::debug!("Saving the following grocery list:\n\n{}", &md); log::debug!("Saving the following grocery list:\n\n{}", &md);
@ -68,6 +70,7 @@ where
async fn get_ingredients<RecipeIds>( async fn get_ingredients<RecipeIds>(
api_client: &ApiClient, api_client: &ApiClient,
recipe_ids: RecipeIds, recipe_ids: RecipeIds,
required_yield: f64,
) -> Result<Vec<(Ingredient, String)>> ) -> Result<Vec<(Ingredient, String)>>
where where
RecipeIds: IntoIterator<Item = usize>, RecipeIds: IntoIterator<Item = usize>,
@ -88,9 +91,10 @@ where
response.json::<Recipe>().await.map(|r| { response.json::<Recipe>().await.map(|r| {
log::info!("Retrieved ingredients for '{}'", r.name); log::info!("Retrieved ingredients for '{}'", r.name);
let recipe_name = r.name.clone(); let recipe_name = r.name.clone();
let scale = required_yield / r.recipe_yield as f64;
r.ingredients r.ingredients
.into_iter() .into_iter()
.map(move |i| (i, recipe_name.clone())) .map(move |i| (i * scale, recipe_name.clone()))
}) })
}); });

View File

@ -283,6 +283,15 @@ impl core::fmt::Display for Ingredient {
} }
} }
impl std::ops::Mul<f64> for Ingredient {
type Output = Ingredient;
fn mul(mut self, rhs: f64) -> Self::Output {
self.amount *= rhs;
self
}
}
impl core::fmt::Display for Unit { impl core::fmt::Display for Unit {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let u: &dyn core::fmt::Display = match self { let u: &dyn core::fmt::Display = match self {