Repository: hhursev/recipe-scrapers
Pull request #309 (2021-01-29 02:26:22)

giallozaferano to schema
Inspired by entry in #162


Patch:
diff --git a/recipe_scrapers/giallozafferano.py b/recipe_scrapers/giallozafferano.py
index 2f8943e0..c6c7cb91 100644
--- a/recipe_scrapers/giallozafferano.py
+++ b/recipe_scrapers/giallozafferano.py
@@ -1,5 +1,4 @@
 from ._abstract import AbstractScraper
-from ._utils import get_minutes, normalize_string, get_yields
 
 
 class GialloZafferano(AbstractScraper):
@@ -8,46 +7,19 @@ class GialloZafferano(AbstractScraper):
         return "ricette.giallozafferano.it"
 
     def title(self):
-        return self.soup.find("h1").get_text()
+        return self.schema.title()
 
     def total_time(self):
-        possible_time_info_elements = self.soup.findAll(
-            "span", {"class": "gz-name-featured-data"}
-        )
-
-        return sum([get_minutes(element) for element in possible_time_info_elements])
+        return self.schema.total_time()
 
     def yields(self):
-        possible_yields_info_elements = self.soup.findAll(
-            "span", {"class": "gz-name-featured-data"}
-        )
-        for element in possible_yields_info_elements:
-            if "persone" in element.get_text():
-                return get_yields(element)
-        return ""
+        return self.schema.yields()
 
     def ingredients(self):
-        ingredients = self.soup.findAll("dd", {"class": "gz-ingredient"})
-
-        if not ingredients:
-            ingredients = self.soup.findAll("li", {"class": "gz-ingredient"})
-
-        return [normalize_string(ingredient.get_text()) for ingredient in ingredients]
+        return self.schema.ingredients()
 
     def instructions(self):
-
-        instructions = self.soup.findAll("div", {"class": "gz-content-recipe-step"})
-
-        return "\n".join(
-            [normalize_string(instruction.get_text()) for instruction in instructions]
-        )
+        return self.schema.instructions()
 
     def ratings(self):
-        return round(
-            float(
-                self.soup.find("div", {"class": "gz-rating-panel rating_panel"})
-                .get("data-content-rate")
-                .replace(",", ".")
-            ),
-            2,
-        )
+        return self.schema.ratings()


Test patch:
diff --git a/tests/test_giallozafferano.py b/tests/test_giallozafferano.py
index 70136b07..3d63a2a7 100644
--- a/tests/test_giallozafferano.py
+++ b/tests/test_giallozafferano.py
@@ -34,7 +34,7 @@ class TestGialloZafferanoScraper(ScraperTest):
                 "Baccello di vaniglia ½",
                 "Limoni ½",
                 "Sale fino 1 pizzico",
-                "Fragole 1,1 kg",
+                "Fragole 1.1 kg",
                 "Gelatina in fogli 18 g",
                 "Panna fresca liquida 500 ml",
                 "Panna fresca liquida 150 ml",
@@ -45,7 +45,7 @@ class TestGialloZafferanoScraper(ScraperTest):
 
     def test_instructions(self):
         return self.assertEqual(
-            "Per preparare la bavarese alle fragole, iniziate dalla crema inglese che è la base del dolce: incidete mezza bacca di vaniglia e raschiate con la punta di un coltellino per estrarre i semini 1. Prelevate la scorza del limone facendo attenzione a non sbucciare anche la parte bianca 2 e unite i due aromi nel pentolino con il latte 3: scaldate a fuoco dolce fino a sfiorare il bollore poi spegnete il fuoco.\nIntanto versate i tuorli in una ciotola capiente sbatteteli con la frusta poi aggiungete 65 g di zucchero semolato a pioggia continuando a mescolare 4 e aggiungete un pizzico di sale 5. Lavorateli per qualche minuto, fino ad ottenere un composto omogeneo. Versate sulle uova sbattute il latte scaldato, filtrandolo con un colino a maglie strette 6.\nMescolate con una spatola 7 e ponete la crema a cuocere a bagno maria a fuoco basso, sempre mescolando 8; la temperatura della crema non deve mai superare gli 85° (controllate con un termometro da cucina) 9 .\nQuando la crema sarà pronta versatela in una ciotola e ponete la ciotola in un'altra più capiente e piena di ghiaccio 10: in questo modo rafferdderete immediatamente la crema senza che la consistenza ne risenta. Mescolate 11 poi togliete dal ghiaccio e coprite la crema con pellicola a contatto per farla raffreddare completamente. Mettete in ammollo i fogli di gelatina in acqua molto fredda 12 per almeno 10 minuti.\nLavate, scolate per bene e togliete il picciolo alle fragole, quindi tagliatele a pezzi 13 e cuocetele in padella con 40 g di zucchero semolato a fuoco dolce, coperte con un coperchio (14-15).\nFrullate le fragole cotte con lo zucchero 16 e setacciate la purea ottenuta 17. Quindi trasferitela in un pentolino e rimettetela sul fuoco dolce 18.\nScolate e strizzate i fogli di gelatina e scioglieteli nella coulis di fragole 19, mescolate con una frusta per farli sciogliere completamente 20. Fate intiepidire il composto, e unitelo alla crema inglese 21 e mescolate.\nPoi a parte montate 500 ml di panna fresca (non troppo ferma) 22 e unitela alla crema di fragole 23 e amalgamate bene il composto: dovrà risultare fluido, cremoso e omogeneo. Quindi prendete uno stampo da ciambella e bagnate l'interno con dell'acqua fredda. Versate delicatamente il composto ottenuto nello stampo di 22 cm di diametro e capienza 1,5 lt 24.\nCopritelo con pellicola trasparente 25 e ponetelo in frigorifero per almeno 4-6 ore (meglio sarebbe prepararlo la sera prima). Preparate poi la panna montata con lo zucchero a velo 26 e ponetela in una sac-à-poche 27 e in frigorifero fino al momento dell'utilizzo.\nTrascorso il tempo necessario, estraete il bavarese dal frigorifero, immergete lo stampo fino al bordo in acqua calda per qualche secondo 28 e poi capovolgete delicatamente il bavarese su di un piatto da portata 29. Decorate il bavarese a piacere con ciuffetti di panna tutto intorno 30.\nCreate dei ciuffi anche sulla superficie 31. Poi decorate con le fragole fresche e foglioline di menta a piacere (32-33).",
+            "Per preparare la bavarese alle fragole, iniziate dalla crema inglese che è la base del dolce: incidete mezza bacca di vaniglia e raschiate con la punta di un coltellino per estrarre i semini 1 . Prelevate la scorza del limone facendo attenzione a non sbucciare anche la parte bianca 2 e unite i due aromi nel pentolino con il latte 3 : scaldate a fuoco dolce fino a sfiorare il bollore poi spegnete il fuoco.\nIntanto versate i tuorli in una ciotola capiente sbatteteli con la frusta poi aggiungete 65 g di zucchero semolato a pioggia continuando a mescolare 4 e aggiungete un pizzico di sale 5 . Lavorateli per qualche minuto, fino ad ottenere un composto omogeneo. Versate sulle uova sbattute il latte scaldato, filtrandolo con un colino a maglie strette 6 .\nMescolate con una spatola 7 e ponete la crema a cuocere a bagno maria a fuoco basso, sempre mescolando 8 ; la temperatura della crema non deve mai superare gli 85° (controllate con un termometro da cucina) 9 .\nQuando la crema sarà pronta versatela in una ciotola e ponete la ciotola in un'altra più capiente e piena di ghiaccio 10 : in questo modo rafferdderete immediatamente la crema senza che la consistenza ne risenta. Mescolate 11 poi togliete dal ghiaccio e coprite la crema con pellicola a contatto per farla raffreddare completamente. Mettete in ammollo i fogli di gelatina in acqua molto fredda 12 per almeno 10 minuti.\nLavate, scolate per bene e togliete il picciolo alle fragole, quindi tagliatele a pezzi 13 e cuocetele in padella con 40 g di zucchero semolato a fuoco dolce, coperte con un coperchio (14-15).\nFrullate le fragole cotte con lo zucchero 16 e setacciate la purea ottenuta 17 . Quindi trasferitela in un pentolino e rimettetela sul fuoco dolce 18 .\nScolate e strizzate i fogli di gelatina e scioglieteli nella coulis di fragole 19 , mescolate con una frusta per farli sciogliere completamente 20 . Fate intiepidire il composto, e unitelo alla crema inglese 21 e mescolate.\nPoi a parte montate 500 ml di panna fresca (non troppo ferma) 22 e unitela alla crema di fragole 23 e amalgamate bene il composto: dovrà risultare fluido, cremoso e omogeneo. Quindi prendete uno stampo da ciambella e bagnate l'interno con dell'acqua fredda. Versate delicatamente il composto ottenuto nello stampo di 22 cm di diametro e capienza 1,5 lt 24 .\nCopritelo con pellicola trasparente 25 e ponetelo in frigorifero per almeno 4-6 ore (meglio sarebbe prepararlo la sera prima). Preparate poi la panna montata con lo zucchero a velo 26 e ponetela in una sac-à-poche 27 e in frigorifero fino al momento dell'utilizzo.\nTrascorso il tempo necessario, estraete il bavarese dal frigorifero, immergete lo stampo fino al bordo in acqua calda per qualche secondo 28 e poi capovolgete delicatamente il bavarese su di un piatto da portata 29 . Decorate il bavarese a piacere con ciuffetti di panna tutto intorno 30 .\nCreate dei ciuffi anche sulla superficie 31 . Poi decorate con le fragole fresche e foglioline di menta a piacere (32-33).",
             self.harvester_class.instructions(),
         )