From 508176f18e8c3b978aef21a45cb01912b2d2af65 Mon Sep 17 00:00:00 2001 From: laurent Date: Mon, 12 Dec 2022 20:58:16 +0100 Subject: [PATCH 1/6] added briceletbaklava.ch --- recipe_scrapers/__init__.py | 2 + recipe_scrapers/briceletbaklava.py | 39 + tests/test_briceletbaklava.py | 36 + tests/test_data/briceletbaklava.testhtml | 3186 ++++++++++++++++++++++ 4 files changed, 3263 insertions(+) create mode 100644 recipe_scrapers/briceletbaklava.py create mode 100644 tests/test_briceletbaklava.py create mode 100644 tests/test_data/briceletbaklava.testhtml diff --git a/recipe_scrapers/__init__.py b/recipe_scrapers/__init__.py index 283b647ff..dd492c17d 100644 --- a/recipe_scrapers/__init__.py +++ b/recipe_scrapers/__init__.py @@ -32,6 +32,7 @@ from .bodybuilding import Bodybuilding from .bonappetit import BonAppetit from .bowlofdelicious import BowlOfDelicious +from .briceletbaklava import BricelEtBaklava from .budgetbytes import BudgetBytes from .castironketo import CastIronKeto from .cdkitchen import CdKitchen @@ -254,6 +255,7 @@ Bodybuilding.host(): Bodybuilding, BonAppetit.host(): BonAppetit, BowlOfDelicious.host(): BowlOfDelicious, + BricelEtBaklava.host(): BricelEtBaklava, BudgetBytes.host(): BudgetBytes, CastIronKeto.host(): CastIronKeto, CdKitchen.host(): CdKitchen, diff --git a/recipe_scrapers/briceletbaklava.py b/recipe_scrapers/briceletbaklava.py new file mode 100644 index 000000000..021ffde81 --- /dev/null +++ b/recipe_scrapers/briceletbaklava.py @@ -0,0 +1,39 @@ +# mypy: allow-untyped-defs + +from ._abstract import AbstractScraper +from ._utils import normalize_string + + +class BricelEtBaklava(AbstractScraper): + @classmethod + def host(cls): + return "briceletbaklava.ch" + + def title(self): + return self.soup.find('h1', {'class' : 'Post-title'}).get_text().strip() + + def category(self): + return '\n'.join([normalize_string(category.get_text()) for category in self.soup.find_all('a', {'class' : 'Post-tag'})]) + + def yields(self): + post = self.soup.find('div', {'class' : 'Post-body'}) + section = post.find_all('div', {'class' : 'ob-section ob-section-html'}) + return normalize_string(section[1].find('p').get_text()) + + def image(self): + return self.soup.find('a' , {'class' : 'ob-link-img'})['href'] + + def instructions(self): + post = self.soup.find('div', {'class' : 'Post-body'}) + return '\n'.join([normalize_string(instruction.get_text()) for instruction in post.find_all('ul')]) + + def ingredients(self): + post = self.soup.find('div', {'class' : 'Post-body'}) + sections = post.find_all('div', {'class' : 'ob-section ob-section-html'}) + return '\n'.join([normalize_string(ingredient.get_text()) for ingredient in sections[1].find_all('b')]) + + def description(self): + return normalize_string(self.soup.find('div', {'class': 'ob-section ob-section-html'}).get_text()) + + def author(self): + return 'Michel/Bricelet & Baklava' diff --git a/tests/test_briceletbaklava.py b/tests/test_briceletbaklava.py new file mode 100644 index 000000000..c07cb106c --- /dev/null +++ b/tests/test_briceletbaklava.py @@ -0,0 +1,36 @@ +# mypy: allow-untyped-defs + +from recipe_scrapers.briceletbaklava import BricelEtBaklava +from tests import ScraperTest + + +class TestBricelEtBaklavaScraper(ScraperTest): + + scraper_class = BricelEtBaklava + + def test_host(self): + self.assertEqual("briceletbaklava.ch", self.harvester_class.host()) + + def test_author(self): + self.assertEqual('Michel/Bricelet & Baklava', self.harvester_class.author()) + + def test_title(self): + self.assertEqual('Bürli de Saint-Gall (St. Galler Bürli)', self.harvester_class.title()) + + def test_category(self): + self.assertEqual('Boulangerie\nRecettes de pains', self.harvester_class.category()) + + def test_yields(self): + self.assertEqual('Recette pour 4 pains doubles 8 pièces de 140 g', self.harvester_class.yields()) + + def test_image(self): + self.assertEqual('https://image.over-blog.com/D913ECH_mmWHTy8_qRECetDo6PU=/filters:no_upscale()/image%2F3215825%2F20210816%2Fob_e19375_pain-buerli-6374.jpg', self.harvester_class.image()) + + def test_ingredients(self): + self.assertEqual("150 g de farine bise (type 1100) *\n150 g d'eau légèrement tiède\n10 g de levain chef actif ou 1 g de levure fraîche\n300 g du levain de la veille\n470 g de farine mi-blanche (type 720) *\n325 g (+ ou – 1 cl) d’eau froide\n6 g de levure fraîche\n14 g de sel\nICI", self.harvester_class.ingredients()) + + def test_instructions(self): + self.assertEqual("Mettre le levain chef dans un bol,\nVerser l’eau tiédie (25°C) par dessus et à l’aide d’un fouet, bien mélanger l’ensemble.\nAjouter la farine\net mélanger pour en faire une pâte un peu collante.\nCouvrir et laisser le levain commencer sa fermentation pendant 3 heures à température ambiante. Déposer ensuite le bol au réfrigérateur (5 à 6°C) pendant au moins 12 heures jusqu’à 24 heures au maximum.\nSortir le levain du réfrigérateur 2 heures avant son emploi afin qu’il se remette en température.\nAjouter par dessus la levure fraîche\net ajouter encore l’eau froide\nafin de le décoller\net verser le tout dans la cuve du pétrin. Ajouter la farine et commencer le pétrissage en vitesse lente, ceci pour 10 bonnes minutes. Après 3 minutes de pétrissage, ajouter le sel. A la fin des 10 minutes, la pâte sera bien collante car très hydratée, c’est normal. Continuer le pétrissage maintenant en 2ème vitesse pendant encore 5 minutes, la pâte doit être très pétrie. Afin de contrôler son élasticité, étirer un morceau de pâte entre les doigts, elle devrait être aussi fine que du papier.\nAvec un peu d’huile, graisser légèrement un grand bol et y déposer la pâte.\nRecouvrir d’un torchon humide ou d’un couvercle et laisser lever entre 3 et 4 heures /selon la saison) à température ambiante. Durant ces 4 heures de pousse, procéder à plusieurs rabats, par exemple toutes les 30 minutes. Il s’agit de rabattre la pâte 3 à 4 fois sur elle-même. Une fois le pointage terminé, la pâte aura bien doublé de volume\nla verser sur le plan de travail fariné et découpez des pâtons de 140 g chacun.\nEnsuite, façonnez délicatement les pâtons en boule sans trop les serrer afin de ne pas les dégazer\nDéposer ces pâtons par deux, l'un à côté de l'autre en se touchant légèrement, sur un torchon bien fariné avec la soudure vers le haut.\nFaire un pli avec le torchon afin que la pâte ne s'étale pas trop et les recouvrir d’un deuxième torchon fariné puis d’un plastique et laisser lever entre 30 et 40 minutes, cette opération se nomme « L’apprêt ». Pendant ce temps, allumer le four sur 240°C en ayant soin d’y déposer une pierre de cuisson ou une plaque métallique retournée. L’apprêt terminé, retourner les pâtons, toujours accolés l’un l’autre et les déposer sur une planchette en bois bien farinée et d’un coup sec, les glisser sur la pierre ou la plaque brûlante, sans oublier de verser au fond du four un verre d’eau avant de fermer la porte. Après 15 minutes de cuisson, entrouvrir rapidement la porte du four afin d’en évacuer la vapeur puis, baisser la température à 220 et poursuivre la cuisson pendant encore 20 minutes. Une fois cuits, les bürli doivent être foncés et croustillant, les sortir et les laisser refroidir sur une grille.", self.harvester_class.instructions()) + + def test_description(self): + self.assertEqual("Le Bürli de Saint-Gall est un petit pain en pâte levée, en forme de ballon. Juste avant l’enfournement ils sont accolés par deux et même quelquefois par 4 avec une cuisson très intense car les saint-gallois les apprécient bien cuits et croustillants. On les associe spontanément à la célèbre saucisse de veau du même canton, car lors de fêtes populaires, à la OLMA notamment, ces deux produits sont indissociables. On tient la saucisse grillée d’une main et le Bürli de l’autre et on les déguste alternativement, sans moutarde. Ces pains sont confectionnés à partir de farine mi-blanche et bise, La pâte est très hydratée ce qui leurs confère une mie très alvéolée et goûteuse. Et juste encore quelques mots sur la saucisse de Saint-Gall. La première mention officielle de celle-ci remonte à 1438. Dans les statuts de la société des bouchers de l’époque, il était indiqué que cette saucisse comprenait une part de viande de veau, une de porc et de lard et une de lait frais. J’y ai travaillé dans ce canton, plus précisément dans le Toggenburg et je peux dire que la recette a très peu changé depuis son origine à part quelques petites variantes, comme le lait frais qui s’est transformé en poudre de lait par exemple. Cette saucisse est vraiment délicieuse et il s’en transforme des tonnes par là-bas et elle a même obtenu le label IGP en 2008. On en mangeait tous les jours, plus précisément lors du « znüni », en français : les « neuf heures ».", self.harvester_class.description()) diff --git a/tests/test_data/briceletbaklava.testhtml b/tests/test_data/briceletbaklava.testhtml new file mode 100644 index 000000000..bc6829268 --- /dev/null +++ b/tests/test_data/briceletbaklava.testhtml @@ -0,0 +1,3186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Bürli de Saint-Gall (St. Galler Bürli) - Bricelet & Baklava + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + 750 grammes + +
+ + +
+ + + +
+ + + + +
+
+
+ + +

+ Bürli de Saint-Gall (St. Galler Bürli) +

+ + + + + +
+ + + +
+
Bürli de Saint-Gall

Bürli de Saint-Gall

+ + +
+ +

Le Bürli de Saint-Gall est un petit pain en pâte levée, en forme de ballon. Juste avant l’enfournement ils sont accolés par deux et même quelquefois par 4 avec une cuisson très intense car les saint-gallois les apprécient bien cuits et croustillants. On les associe spontanément à la célèbre saucisse de veau du même canton, car lors de fêtes populaires, à la OLMA notamment, ces deux produits sont indissociables. On tient la saucisse grillée d’une main et le Bürli de l’autre et on les déguste alternativement, sans moutarde.

+ +
+ +

Ces pains sont confectionnés à partir de farine mi-blanche et bise, La pâte est très hydratée ce qui leurs confère une mie très alvéolée et goûteuse.

+ +

Et juste encore quelques mots sur la saucisse de Saint-Gall. La première mention officielle de celle-ci remonte à 1438. Dans les statuts de la société des bouchers de l’époque, il était indiqué que cette saucisse comprenait une part de viande de veau, une de porc et de lard et une de lait frais.

+ +

J’y ai travaillé dans ce canton, plus précisément dans le Toggenburg et je peux dire que la recette a très peu changé depuis son origine à part quelques petites variantes, comme le lait frais qui s’est transformé en poudre de lait par exemple. Cette saucisse est vraiment délicieuse et il s’en transforme des tonnes par là-bas et elle a même obtenu le label IGP en 2008. On en mangeait tous les jours, plus précisément lors du « znüni », en français : les « neuf heures ».

+
+ + +
Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

+ + +
+ +

Recette pour 4 pains doubles  8 pièces de 140 g 

+ +

Ingrédients pour le levain (1 nuit)

+ +

150 g de farine bise (type 1100) *

+ +

150 g d'eau légèrement tiède

+ +

10 g de levain chef actif ou 1 g de levure fraîche

+ +

 

+ +

 

+ +
    +
  • Mettre le levain chef dans un bol,
  • +
+ +
+ +
    +
  • Verser l’eau tiédie (25°C) par dessus et à l’aide d’un fouet, bien mélanger l’ensemble.
  • +
+ +
+ +
    +
  • Ajouter la farine
  • +
+ +
+ +
    +
  • et mélanger pour en faire une pâte un peu collante.
  • +
+ +
+ +
    +
  • Couvrir et laisser le levain commencer sa fermentation pendant 3 heures à température ambiante.
  • +
  • Déposer ensuite le bol au réfrigérateur (5 à 6°C) pendant au moins 12 heures  jusqu’à 24 heures au maximum.
  • +
+ +

 

+ +

Ingrédients pour la pâte (4 heures)

+ +

300 g du levain de la veille

+ +

470 g de farine mi-blanche (type 720) *

+ +

325 g (+ ou – 1 cl) d’eau froide

+ +

6 g de levure fraîche

+ +

14 g de sel

+ +

* La dénominations des type de farine Suisse-France, c’est ICI

+ +

 

+ +
    +
  • Sortir le levain du réfrigérateur 2 heures avant son emploi afin qu’il se remette en température.
  • +
+ +
+ +
    +
  • Ajouter par dessus la levure fraîche
  • +
+ +
+ +
    +
  • et ajouter encore l’eau froide
  • +
+ +
+ +
    +
  •  afin de le décoller
  • +
+ +
+ +
    +
  • et verser le tout dans la cuve du pétrin. Ajouter la farine et commencer le pétrissage en vitesse lente, ceci pour 10 bonnes minutes.
  • +
  • Après 3 minutes de pétrissage, ajouter le sel.
  • +
  • A la fin des 10 minutes, la pâte sera bien collante car très hydratée, c’est normal. Continuer le pétrissage maintenant en 2ème vitesse pendant encore 5 minutes, la pâte doit être très pétrie. Afin de contrôler son élasticité, étirer un morceau de pâte entre les doigts, elle devrait être aussi fine que du papier.
  • +
+ +
+ +
    +
  • Avec un peu d’huile, graisser légèrement un grand bol et y déposer la pâte.
  • +
+ +
+ +
    +
  • Recouvrir d’un torchon humide ou d’un couvercle et laisser lever entre 3 et 4 heures /selon la saison) à température ambiante.
  • +
  • Durant ces 4 heures de pousse, procéder à plusieurs rabats, par exemple toutes les 30 minutes. Il s’agit de rabattre la pâte 3 à 4 fois sur elle-même.
  • +
  • Une fois le pointage terminé, la pâte aura bien doublé de volume
  • +
+ +
+ +
    +
  • la verser sur le plan de travail fariné et découpez des pâtons de 140 g chacun.
  • +
+ +
+ +
    +
  • Ensuite, façonnez délicatement les pâtons en boule sans trop les serrer afin de ne pas les dégazer
  • +
+ +
+ +
    +
  • Déposer ces pâtons par deux, l'un à côté de l'autre en se touchant légèrement, sur un torchon bien fariné avec la soudure vers le haut.
  • +
+ +
+ +
    +
  • Faire un pli avec le torchon afin que la pâte ne s'étale pas trop et les recouvrir d’un deuxième torchon fariné puis d’un plastique et laisser lever entre 30 et 40 minutes, cette opération se nomme « L’apprêt ».
  • +
  • Pendant ce temps, allumer le four sur 240°C en ayant soin d’y déposer une pierre de cuisson ou une plaque métallique retournée.
  • +
  • L’apprêt terminé, retourner les pâtons, toujours accolés l’un l’autre et les déposer sur une planchette en bois bien farinée et d’un coup sec, les glisser sur la pierre ou la plaque brûlante, sans oublier de verser au fond du four un verre d’eau avant de fermer la porte.
  • +
  • Après 15 minutes de cuisson, entrouvrir rapidement la porte du four afin d’en évacuer la vapeur puis, baisser la température à 220 et poursuivre la cuisson pendant encore 20 minutes.
  • +
  • Une fois cuits, les bürli doivent être foncés et croustillant, les sortir et les laisser refroidir sur une grille.
  • +
+ +
+ +

 

+
+ + +
Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

Bürli de Saint-Gall

+ +
+ +
+ + + + + +
Partager cet article
+
+
+
+
+
+ +
+
+ +
+
+ + + +
+
+ Repost0 +
+ +
+ + + + + + + + + +
+ +
+
Pour être informé des derniers articles, inscrivez vous :
+
+ + +
+
+
+ + + + + + + + + + + + + + +
+
Commenter cet article
+
+ +
+ +
+
+
+ + + +
+
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + From 646398ec29e99bce22322c70aa6054bb97854203 Mon Sep 17 00:00:00 2001 From: lacliq <94917426+lacliq@users.noreply.github.com> Date: Mon, 12 Dec 2022 21:08:20 +0100 Subject: [PATCH 2/6] added briceletbaklava.ch to README --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index 745a3e0b2..ed78467eb 100644 --- a/README.rst +++ b/README.rst @@ -107,6 +107,7 @@ Scrapers available for: - `https://bonappetit.com/ `_ - `https://www.bodybuilding.com/ `_ - `https://bowlofdelicious.com/ `_ +- `https://briceletbaklava.ch/ `_ - `https://budgetbytes.com/ `_ - `https://castironketo.net/ `_ - `https://cdkitchen.com/ `_ From 44f37fa7285e2bb23c01609e0045fb6a0e0e0438 Mon Sep 17 00:00:00 2001 From: lacliq <94917426+lacliq@users.noreply.github.com> Date: Tue, 13 Dec 2022 18:03:22 +0100 Subject: [PATCH 3/6] Update recipe_scrapers/briceletbaklava.py Co-authored-by: James Addison <55152140+jayaddison@users.noreply.github.com> --- recipe_scrapers/briceletbaklava.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe_scrapers/briceletbaklava.py b/recipe_scrapers/briceletbaklava.py index 021ffde81..04e9e3e4f 100644 --- a/recipe_scrapers/briceletbaklava.py +++ b/recipe_scrapers/briceletbaklava.py @@ -30,7 +30,7 @@ def instructions(self): def ingredients(self): post = self.soup.find('div', {'class' : 'Post-body'}) sections = post.find_all('div', {'class' : 'ob-section ob-section-html'}) - return '\n'.join([normalize_string(ingredient.get_text()) for ingredient in sections[1].find_all('b')]) + return [normalize_string(ingredient.get_text()) for ingredient in sections[1].find_all('b')] def description(self): return normalize_string(self.soup.find('div', {'class': 'ob-section ob-section-html'}).get_text()) From 792daf1a158da050706223a5c332d9a502814e86 Mon Sep 17 00:00:00 2001 From: lacliq <94917426+lacliq@users.noreply.github.com> Date: Tue, 13 Dec 2022 18:28:18 +0100 Subject: [PATCH 4/6] return list of string category, ingredients and ingredients function now return list of string instead string with \n --- recipe_scrapers/Untitled.ipynb | 126 +++++++++++++++++++++++++++++ recipe_scrapers/briceletbaklava.py | 6 +- tests/test_briceletbaklava.py | 6 +- 3 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 recipe_scrapers/Untitled.ipynb diff --git a/recipe_scrapers/Untitled.ipynb b/recipe_scrapers/Untitled.ipynb new file mode 100644 index 000000000..95853e05b --- /dev/null +++ b/recipe_scrapers/Untitled.ipynb @@ -0,0 +1,126 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "id": "58931a53-478f-4153-99b3-939d85674dd1", + "metadata": {}, + "outputs": [], + "source": [ + "from recipe_scrapers import scrape_me\n", + "from recipe_scrapers._utils import normalize_string\n", + "\n", + "# give the url as a string, it can be url from any site listed below\n", + "scraper = scrape_me('https://www.allrecipes.com/recipe/158968/spinach-and-feta-turkey-burgers/')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "cdf95b01-aedc-41e6-8c91-ac20b80f1a14", + "metadata": {}, + "outputs": [], + "source": [ + "scraper.category()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "ce2b7179-ef8b-4685-927e-2d3b878b6ded", + "metadata": {}, + "outputs": [], + "source": [ + "bb = scrape_me('https://briceletbaklava.ch/2021/08/burli-de-saint-gall-st.galler-burli.html')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "31a3f312-fdfe-4d04-9527-972c12341306", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Boulangerie,Recettes de pains'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bb.category()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "b2b52789-fa0b-40a8-b51d-ad2ce76d9ceb", + "metadata": {}, + "outputs": [], + "source": [ + "cat = bb.soup.find_all('a', {'class' : 'Post-tag'})" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c09b7181-f27f-4aef-bed8-5b976c8fad9c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Boulangerie', 'Recettes de pains']" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[normalize_string(c.get_text()) for c in cat]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60258900-bfa2-479d-a40e-04ee084567e9", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/recipe_scrapers/briceletbaklava.py b/recipe_scrapers/briceletbaklava.py index 04e9e3e4f..02d615905 100644 --- a/recipe_scrapers/briceletbaklava.py +++ b/recipe_scrapers/briceletbaklava.py @@ -13,7 +13,7 @@ def title(self): return self.soup.find('h1', {'class' : 'Post-title'}).get_text().strip() def category(self): - return '\n'.join([normalize_string(category.get_text()) for category in self.soup.find_all('a', {'class' : 'Post-tag'})]) + return [normalize_string(category.get_text()) for category in self.soup.find_all('a', {'class' : 'Post-tag'})] def yields(self): post = self.soup.find('div', {'class' : 'Post-body'}) @@ -25,7 +25,7 @@ def image(self): def instructions(self): post = self.soup.find('div', {'class' : 'Post-body'}) - return '\n'.join([normalize_string(instruction.get_text()) for instruction in post.find_all('ul')]) + return [normalize_string(instruction.get_text()) for instruction in post.find_all('ul')] def ingredients(self): post = self.soup.find('div', {'class' : 'Post-body'}) @@ -34,6 +34,6 @@ def ingredients(self): def description(self): return normalize_string(self.soup.find('div', {'class': 'ob-section ob-section-html'}).get_text()) - + def author(self): return 'Michel/Bricelet & Baklava' diff --git a/tests/test_briceletbaklava.py b/tests/test_briceletbaklava.py index c07cb106c..ccf191e9d 100644 --- a/tests/test_briceletbaklava.py +++ b/tests/test_briceletbaklava.py @@ -18,7 +18,7 @@ def test_title(self): self.assertEqual('Bürli de Saint-Gall (St. Galler Bürli)', self.harvester_class.title()) def test_category(self): - self.assertEqual('Boulangerie\nRecettes de pains', self.harvester_class.category()) + self.assertEqual(['Boulangerie', 'Recettes de pains'], self.harvester_class.category()) def test_yields(self): self.assertEqual('Recette pour 4 pains doubles 8 pièces de 140 g', self.harvester_class.yields()) @@ -27,10 +27,10 @@ def test_image(self): self.assertEqual('https://image.over-blog.com/D913ECH_mmWHTy8_qRECetDo6PU=/filters:no_upscale()/image%2F3215825%2F20210816%2Fob_e19375_pain-buerli-6374.jpg', self.harvester_class.image()) def test_ingredients(self): - self.assertEqual("150 g de farine bise (type 1100) *\n150 g d'eau légèrement tiède\n10 g de levain chef actif ou 1 g de levure fraîche\n300 g du levain de la veille\n470 g de farine mi-blanche (type 720) *\n325 g (+ ou – 1 cl) d’eau froide\n6 g de levure fraîche\n14 g de sel\nICI", self.harvester_class.ingredients()) + self.assertEqual(["150 g de farine bise (type 1100) *", "150 g d'eau légèrement tiède", "10 g de levain chef actif ou 1 g de levure fraîche", "300 g du levain de la veille", "470 g de farine mi-blanche (type 720) *", "325 g (+ ou – 1 cl) d’eau froide", "6 g de levure fraîche", "14 g de sel", "ICI"], self.harvester_class.ingredients()) def test_instructions(self): - self.assertEqual("Mettre le levain chef dans un bol,\nVerser l’eau tiédie (25°C) par dessus et à l’aide d’un fouet, bien mélanger l’ensemble.\nAjouter la farine\net mélanger pour en faire une pâte un peu collante.\nCouvrir et laisser le levain commencer sa fermentation pendant 3 heures à température ambiante. Déposer ensuite le bol au réfrigérateur (5 à 6°C) pendant au moins 12 heures jusqu’à 24 heures au maximum.\nSortir le levain du réfrigérateur 2 heures avant son emploi afin qu’il se remette en température.\nAjouter par dessus la levure fraîche\net ajouter encore l’eau froide\nafin de le décoller\net verser le tout dans la cuve du pétrin. Ajouter la farine et commencer le pétrissage en vitesse lente, ceci pour 10 bonnes minutes. Après 3 minutes de pétrissage, ajouter le sel. A la fin des 10 minutes, la pâte sera bien collante car très hydratée, c’est normal. Continuer le pétrissage maintenant en 2ème vitesse pendant encore 5 minutes, la pâte doit être très pétrie. Afin de contrôler son élasticité, étirer un morceau de pâte entre les doigts, elle devrait être aussi fine que du papier.\nAvec un peu d’huile, graisser légèrement un grand bol et y déposer la pâte.\nRecouvrir d’un torchon humide ou d’un couvercle et laisser lever entre 3 et 4 heures /selon la saison) à température ambiante. Durant ces 4 heures de pousse, procéder à plusieurs rabats, par exemple toutes les 30 minutes. Il s’agit de rabattre la pâte 3 à 4 fois sur elle-même. Une fois le pointage terminé, la pâte aura bien doublé de volume\nla verser sur le plan de travail fariné et découpez des pâtons de 140 g chacun.\nEnsuite, façonnez délicatement les pâtons en boule sans trop les serrer afin de ne pas les dégazer\nDéposer ces pâtons par deux, l'un à côté de l'autre en se touchant légèrement, sur un torchon bien fariné avec la soudure vers le haut.\nFaire un pli avec le torchon afin que la pâte ne s'étale pas trop et les recouvrir d’un deuxième torchon fariné puis d’un plastique et laisser lever entre 30 et 40 minutes, cette opération se nomme « L’apprêt ». Pendant ce temps, allumer le four sur 240°C en ayant soin d’y déposer une pierre de cuisson ou une plaque métallique retournée. L’apprêt terminé, retourner les pâtons, toujours accolés l’un l’autre et les déposer sur une planchette en bois bien farinée et d’un coup sec, les glisser sur la pierre ou la plaque brûlante, sans oublier de verser au fond du four un verre d’eau avant de fermer la porte. Après 15 minutes de cuisson, entrouvrir rapidement la porte du four afin d’en évacuer la vapeur puis, baisser la température à 220 et poursuivre la cuisson pendant encore 20 minutes. Une fois cuits, les bürli doivent être foncés et croustillant, les sortir et les laisser refroidir sur une grille.", self.harvester_class.instructions()) + self.assertEqual(["Mettre le levain chef dans un bol,", "Verser l’eau tiédie (25°C) par dessus et à l’aide d’un fouet, bien mélanger l’ensemble.", "Ajouter la farine", "et mélanger pour en faire une pâte un peu collante.", "Couvrir et laisser le levain commencer sa fermentation pendant 3 heures à température ambiante. Déposer ensuite le bol au réfrigérateur (5 à 6°C) pendant au moins 12 heures jusqu’à 24 heures au maximum.", "Sortir le levain du réfrigérateur 2 heures avant son emploi afin qu’il se remette en température.", "Ajouter par dessus la levure fraîche", "et ajouter encore l’eau froide", "afin de le décoller", "et verser le tout dans la cuve du pétrin. Ajouter la farine et commencer le pétrissage en vitesse lente, ceci pour 10 bonnes minutes. Après 3 minutes de pétrissage, ajouter le sel. A la fin des 10 minutes, la pâte sera bien collante car très hydratée, c’est normal. Continuer le pétrissage maintenant en 2ème vitesse pendant encore 5 minutes, la pâte doit être très pétrie. Afin de contrôler son élasticité, étirer un morceau de pâte entre les doigts, elle devrait être aussi fine que du papier.", "Avec un peu d’huile, graisser légèrement un grand bol et y déposer la pâte.", "Recouvrir d’un torchon humide ou d’un couvercle et laisser lever entre 3 et 4 heures /selon la saison) à température ambiante. Durant ces 4 heures de pousse, procéder à plusieurs rabats, par exemple toutes les 30 minutes. Il s’agit de rabattre la pâte 3 à 4 fois sur elle-même. Une fois le pointage terminé, la pâte aura bien doublé de volume", "la verser sur le plan de travail fariné et découpez des pâtons de 140 g chacun.", "Ensuite, façonnez délicatement les pâtons en boule sans trop les serrer afin de ne pas les dégazer", "Déposer ces pâtons par deux, l'un à côté de l'autre en se touchant légèrement, sur un torchon bien fariné avec la soudure vers le haut.", "Faire un pli avec le torchon afin que la pâte ne s'étale pas trop et les recouvrir d’un deuxième torchon fariné puis d’un plastique et laisser lever entre 30 et 40 minutes, cette opération se nomme « L’apprêt ». Pendant ce temps, allumer le four sur 240°C en ayant soin d’y déposer une pierre de cuisson ou une plaque métallique retournée. L’apprêt terminé, retourner les pâtons, toujours accolés l’un l’autre et les déposer sur une planchette en bois bien farinée et d’un coup sec, les glisser sur la pierre ou la plaque brûlante, sans oublier de verser au fond du four un verre d’eau avant de fermer la porte. Après 15 minutes de cuisson, entrouvrir rapidement la porte du four afin d’en évacuer la vapeur puis, baisser la température à 220 et poursuivre la cuisson pendant encore 20 minutes. Une fois cuits, les bürli doivent être foncés et croustillant, les sortir et les laisser refroidir sur une grille."], self.harvester_class.instructions()) def test_description(self): self.assertEqual("Le Bürli de Saint-Gall est un petit pain en pâte levée, en forme de ballon. Juste avant l’enfournement ils sont accolés par deux et même quelquefois par 4 avec une cuisson très intense car les saint-gallois les apprécient bien cuits et croustillants. On les associe spontanément à la célèbre saucisse de veau du même canton, car lors de fêtes populaires, à la OLMA notamment, ces deux produits sont indissociables. On tient la saucisse grillée d’une main et le Bürli de l’autre et on les déguste alternativement, sans moutarde. Ces pains sont confectionnés à partir de farine mi-blanche et bise, La pâte est très hydratée ce qui leurs confère une mie très alvéolée et goûteuse. Et juste encore quelques mots sur la saucisse de Saint-Gall. La première mention officielle de celle-ci remonte à 1438. Dans les statuts de la société des bouchers de l’époque, il était indiqué que cette saucisse comprenait une part de viande de veau, une de porc et de lard et une de lait frais. J’y ai travaillé dans ce canton, plus précisément dans le Toggenburg et je peux dire que la recette a très peu changé depuis son origine à part quelques petites variantes, comme le lait frais qui s’est transformé en poudre de lait par exemple. Cette saucisse est vraiment délicieuse et il s’en transforme des tonnes par là-bas et elle a même obtenu le label IGP en 2008. On en mangeait tous les jours, plus précisément lors du « znüni », en français : les « neuf heures ».", self.harvester_class.description()) From 9340df632a90dd0c8330a769236c4e367a5dafa1 Mon Sep 17 00:00:00 2001 From: lacliq <94917426+lacliq@users.noreply.github.com> Date: Tue, 13 Dec 2022 18:44:12 +0100 Subject: [PATCH 5/6] Delete Untitled.ipynb --- recipe_scrapers/Untitled.ipynb | 126 --------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 recipe_scrapers/Untitled.ipynb diff --git a/recipe_scrapers/Untitled.ipynb b/recipe_scrapers/Untitled.ipynb deleted file mode 100644 index 95853e05b..000000000 --- a/recipe_scrapers/Untitled.ipynb +++ /dev/null @@ -1,126 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 12, - "id": "58931a53-478f-4153-99b3-939d85674dd1", - "metadata": {}, - "outputs": [], - "source": [ - "from recipe_scrapers import scrape_me\n", - "from recipe_scrapers._utils import normalize_string\n", - "\n", - "# give the url as a string, it can be url from any site listed below\n", - "scraper = scrape_me('https://www.allrecipes.com/recipe/158968/spinach-and-feta-turkey-burgers/')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "cdf95b01-aedc-41e6-8c91-ac20b80f1a14", - "metadata": {}, - "outputs": [], - "source": [ - "scraper.category()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "ce2b7179-ef8b-4685-927e-2d3b878b6ded", - "metadata": {}, - "outputs": [], - "source": [ - "bb = scrape_me('https://briceletbaklava.ch/2021/08/burli-de-saint-gall-st.galler-burli.html')" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "31a3f312-fdfe-4d04-9527-972c12341306", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Boulangerie,Recettes de pains'" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bb.category()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "b2b52789-fa0b-40a8-b51d-ad2ce76d9ceb", - "metadata": {}, - "outputs": [], - "source": [ - "cat = bb.soup.find_all('a', {'class' : 'Post-tag'})" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "c09b7181-f27f-4aef-bed8-5b976c8fad9c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Boulangerie', 'Recettes de pains']" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[normalize_string(c.get_text()) for c in cat]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "60258900-bfa2-479d-a40e-04ee084567e9", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.8" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": {}, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 4f6bcd30beefd3da400f5ab92abb763a7bec5598 Mon Sep 17 00:00:00 2001 From: lacliq <94917426+lacliq@users.noreply.github.com> Date: Tue, 13 Dec 2022 20:50:03 +0100 Subject: [PATCH 6/6] return string & formatting - black formatting + flake8 check - category & instructions return string --- recipe_scrapers/briceletbaklava.py | 41 ++++++++++++++++++--------- tests/test_briceletbaklava.py | 45 ++++++++++++++++++++++++------ 2 files changed, 65 insertions(+), 21 deletions(-) diff --git a/recipe_scrapers/briceletbaklava.py b/recipe_scrapers/briceletbaklava.py index 02d615905..e2b5603a0 100644 --- a/recipe_scrapers/briceletbaklava.py +++ b/recipe_scrapers/briceletbaklava.py @@ -10,30 +10,45 @@ def host(cls): return "briceletbaklava.ch" def title(self): - return self.soup.find('h1', {'class' : 'Post-title'}).get_text().strip() + return self.soup.find("h1", {"class": "Post-title"}).get_text().strip() def category(self): - return [normalize_string(category.get_text()) for category in self.soup.find_all('a', {'class' : 'Post-tag'})] + return "\n".join( + [ + normalize_string(category.get_text()) + for category in self.soup.find_all("a", {"class": "Post-tag"}) + ] + ) def yields(self): - post = self.soup.find('div', {'class' : 'Post-body'}) - section = post.find_all('div', {'class' : 'ob-section ob-section-html'}) - return normalize_string(section[1].find('p').get_text()) + post = self.soup.find("div", {"class": "Post-body"}) + section = post.find_all("div", {"class": "ob-section ob-section-html"}) + return normalize_string(section[1].find("p").get_text()) def image(self): - return self.soup.find('a' , {'class' : 'ob-link-img'})['href'] + return self.soup.find("a", {"class": "ob-link-img"})["href"] def instructions(self): - post = self.soup.find('div', {'class' : 'Post-body'}) - return [normalize_string(instruction.get_text()) for instruction in post.find_all('ul')] + post = self.soup.find("div", {"class": "Post-body"}) + return "\n".join( + [ + normalize_string(instruction.get_text()) + for instruction in post.find_all("ul") + ] + ) def ingredients(self): - post = self.soup.find('div', {'class' : 'Post-body'}) - sections = post.find_all('div', {'class' : 'ob-section ob-section-html'}) - return [normalize_string(ingredient.get_text()) for ingredient in sections[1].find_all('b')] + post = self.soup.find("div", {"class": "Post-body"}) + sections = post.find_all("div", {"class": "ob-section ob-section-html"}) + return [ + normalize_string(ingredient.get_text()) + for ingredient in sections[1].find_all("b") + ] def description(self): - return normalize_string(self.soup.find('div', {'class': 'ob-section ob-section-html'}).get_text()) + return normalize_string( + self.soup.find("div", {"class": "ob-section ob-section-html"}).get_text() + ) def author(self): - return 'Michel/Bricelet & Baklava' + return "Michel/Bricelet & Baklava" diff --git a/tests/test_briceletbaklava.py b/tests/test_briceletbaklava.py index ccf191e9d..c250c89cd 100644 --- a/tests/test_briceletbaklava.py +++ b/tests/test_briceletbaklava.py @@ -12,25 +12,54 @@ def test_host(self): self.assertEqual("briceletbaklava.ch", self.harvester_class.host()) def test_author(self): - self.assertEqual('Michel/Bricelet & Baklava', self.harvester_class.author()) + self.assertEqual("Michel/Bricelet & Baklava", self.harvester_class.author()) def test_title(self): - self.assertEqual('Bürli de Saint-Gall (St. Galler Bürli)', self.harvester_class.title()) + self.assertEqual( + "Bürli de Saint-Gall (St. Galler Bürli)", self.harvester_class.title() + ) def test_category(self): - self.assertEqual(['Boulangerie', 'Recettes de pains'], self.harvester_class.category()) + self.assertEqual( + "Boulangerie\nRecettes de pains", self.harvester_class.category() + ) def test_yields(self): - self.assertEqual('Recette pour 4 pains doubles 8 pièces de 140 g', self.harvester_class.yields()) + self.assertEqual( + "Recette pour 4 pains doubles 8 pièces de 140 g", + self.harvester_class.yields(), + ) def test_image(self): - self.assertEqual('https://image.over-blog.com/D913ECH_mmWHTy8_qRECetDo6PU=/filters:no_upscale()/image%2F3215825%2F20210816%2Fob_e19375_pain-buerli-6374.jpg', self.harvester_class.image()) + self.assertEqual( + "https://image.over-blog.com/D913ECH_mmWHTy8_qRECetDo6PU=/filters:no_upscale()/image%2F3215825%2F20210816%2Fob_e19375_pain-buerli-6374.jpg", + self.harvester_class.image(), + ) def test_ingredients(self): - self.assertEqual(["150 g de farine bise (type 1100) *", "150 g d'eau légèrement tiède", "10 g de levain chef actif ou 1 g de levure fraîche", "300 g du levain de la veille", "470 g de farine mi-blanche (type 720) *", "325 g (+ ou – 1 cl) d’eau froide", "6 g de levure fraîche", "14 g de sel", "ICI"], self.harvester_class.ingredients()) + self.assertEqual( + [ + "150 g de farine bise (type 1100) *", + "150 g d'eau légèrement tiède", + "10 g de levain chef actif ou 1 g de levure fraîche", + "300 g du levain de la veille", + "470 g de farine mi-blanche (type 720) *", + "325 g (+ ou – 1 cl) d’eau froide", + "6 g de levure fraîche", + "14 g de sel", + "ICI", + ], + self.harvester_class.ingredients(), + ) def test_instructions(self): - self.assertEqual(["Mettre le levain chef dans un bol,", "Verser l’eau tiédie (25°C) par dessus et à l’aide d’un fouet, bien mélanger l’ensemble.", "Ajouter la farine", "et mélanger pour en faire une pâte un peu collante.", "Couvrir et laisser le levain commencer sa fermentation pendant 3 heures à température ambiante. Déposer ensuite le bol au réfrigérateur (5 à 6°C) pendant au moins 12 heures jusqu’à 24 heures au maximum.", "Sortir le levain du réfrigérateur 2 heures avant son emploi afin qu’il se remette en température.", "Ajouter par dessus la levure fraîche", "et ajouter encore l’eau froide", "afin de le décoller", "et verser le tout dans la cuve du pétrin. Ajouter la farine et commencer le pétrissage en vitesse lente, ceci pour 10 bonnes minutes. Après 3 minutes de pétrissage, ajouter le sel. A la fin des 10 minutes, la pâte sera bien collante car très hydratée, c’est normal. Continuer le pétrissage maintenant en 2ème vitesse pendant encore 5 minutes, la pâte doit être très pétrie. Afin de contrôler son élasticité, étirer un morceau de pâte entre les doigts, elle devrait être aussi fine que du papier.", "Avec un peu d’huile, graisser légèrement un grand bol et y déposer la pâte.", "Recouvrir d’un torchon humide ou d’un couvercle et laisser lever entre 3 et 4 heures /selon la saison) à température ambiante. Durant ces 4 heures de pousse, procéder à plusieurs rabats, par exemple toutes les 30 minutes. Il s’agit de rabattre la pâte 3 à 4 fois sur elle-même. Une fois le pointage terminé, la pâte aura bien doublé de volume", "la verser sur le plan de travail fariné et découpez des pâtons de 140 g chacun.", "Ensuite, façonnez délicatement les pâtons en boule sans trop les serrer afin de ne pas les dégazer", "Déposer ces pâtons par deux, l'un à côté de l'autre en se touchant légèrement, sur un torchon bien fariné avec la soudure vers le haut.", "Faire un pli avec le torchon afin que la pâte ne s'étale pas trop et les recouvrir d’un deuxième torchon fariné puis d’un plastique et laisser lever entre 30 et 40 minutes, cette opération se nomme « L’apprêt ». Pendant ce temps, allumer le four sur 240°C en ayant soin d’y déposer une pierre de cuisson ou une plaque métallique retournée. L’apprêt terminé, retourner les pâtons, toujours accolés l’un l’autre et les déposer sur une planchette en bois bien farinée et d’un coup sec, les glisser sur la pierre ou la plaque brûlante, sans oublier de verser au fond du four un verre d’eau avant de fermer la porte. Après 15 minutes de cuisson, entrouvrir rapidement la porte du four afin d’en évacuer la vapeur puis, baisser la température à 220 et poursuivre la cuisson pendant encore 20 minutes. Une fois cuits, les bürli doivent être foncés et croustillant, les sortir et les laisser refroidir sur une grille."], self.harvester_class.instructions()) + self.assertEqual( + "Mettre le levain chef dans un bol,\nVerser l’eau tiédie (25°C) par dessus et à l’aide d’un fouet, bien mélanger l’ensemble.\nAjouter la farine\net mélanger pour en faire une pâte un peu collante.\nCouvrir et laisser le levain commencer sa fermentation pendant 3 heures à température ambiante. Déposer ensuite le bol au réfrigérateur (5 à 6°C) pendant au moins 12 heures jusqu’à 24 heures au maximum.\nSortir le levain du réfrigérateur 2 heures avant son emploi afin qu’il se remette en température.\nAjouter par dessus la levure fraîche\net ajouter encore l’eau froide\nafin de le décoller\net verser le tout dans la cuve du pétrin. Ajouter la farine et commencer le pétrissage en vitesse lente, ceci pour 10 bonnes minutes. Après 3 minutes de pétrissage, ajouter le sel. A la fin des 10 minutes, la pâte sera bien collante car très hydratée, c’est normal. Continuer le pétrissage maintenant en 2ème vitesse pendant encore 5 minutes, la pâte doit être très pétrie. Afin de contrôler son élasticité, étirer un morceau de pâte entre les doigts, elle devrait être aussi fine que du papier.\nAvec un peu d’huile, graisser légèrement un grand bol et y déposer la pâte.\nRecouvrir d’un torchon humide ou d’un couvercle et laisser lever entre 3 et 4 heures /selon la saison) à température ambiante. Durant ces 4 heures de pousse, procéder à plusieurs rabats, par exemple toutes les 30 minutes. Il s’agit de rabattre la pâte 3 à 4 fois sur elle-même. Une fois le pointage terminé, la pâte aura bien doublé de volume\nla verser sur le plan de travail fariné et découpez des pâtons de 140 g chacun.\nEnsuite, façonnez délicatement les pâtons en boule sans trop les serrer afin de ne pas les dégazer\nDéposer ces pâtons par deux, l'un à côté de l'autre en se touchant légèrement, sur un torchon bien fariné avec la soudure vers le haut.\nFaire un pli avec le torchon afin que la pâte ne s'étale pas trop et les recouvrir d’un deuxième torchon fariné puis d’un plastique et laisser lever entre 30 et 40 minutes, cette opération se nomme « L’apprêt ». Pendant ce temps, allumer le four sur 240°C en ayant soin d’y déposer une pierre de cuisson ou une plaque métallique retournée. L’apprêt terminé, retourner les pâtons, toujours accolés l’un l’autre et les déposer sur une planchette en bois bien farinée et d’un coup sec, les glisser sur la pierre ou la plaque brûlante, sans oublier de verser au fond du four un verre d’eau avant de fermer la porte. Après 15 minutes de cuisson, entrouvrir rapidement la porte du four afin d’en évacuer la vapeur puis, baisser la température à 220 et poursuivre la cuisson pendant encore 20 minutes. Une fois cuits, les bürli doivent être foncés et croustillant, les sortir et les laisser refroidir sur une grille.", + self.harvester_class.instructions(), + ) def test_description(self): - self.assertEqual("Le Bürli de Saint-Gall est un petit pain en pâte levée, en forme de ballon. Juste avant l’enfournement ils sont accolés par deux et même quelquefois par 4 avec une cuisson très intense car les saint-gallois les apprécient bien cuits et croustillants. On les associe spontanément à la célèbre saucisse de veau du même canton, car lors de fêtes populaires, à la OLMA notamment, ces deux produits sont indissociables. On tient la saucisse grillée d’une main et le Bürli de l’autre et on les déguste alternativement, sans moutarde. Ces pains sont confectionnés à partir de farine mi-blanche et bise, La pâte est très hydratée ce qui leurs confère une mie très alvéolée et goûteuse. Et juste encore quelques mots sur la saucisse de Saint-Gall. La première mention officielle de celle-ci remonte à 1438. Dans les statuts de la société des bouchers de l’époque, il était indiqué que cette saucisse comprenait une part de viande de veau, une de porc et de lard et une de lait frais. J’y ai travaillé dans ce canton, plus précisément dans le Toggenburg et je peux dire que la recette a très peu changé depuis son origine à part quelques petites variantes, comme le lait frais qui s’est transformé en poudre de lait par exemple. Cette saucisse est vraiment délicieuse et il s’en transforme des tonnes par là-bas et elle a même obtenu le label IGP en 2008. On en mangeait tous les jours, plus précisément lors du « znüni », en français : les « neuf heures ».", self.harvester_class.description()) + self.assertEqual( + "Le Bürli de Saint-Gall est un petit pain en pâte levée, en forme de ballon. Juste avant l’enfournement ils sont accolés par deux et même quelquefois par 4 avec une cuisson très intense car les saint-gallois les apprécient bien cuits et croustillants. On les associe spontanément à la célèbre saucisse de veau du même canton, car lors de fêtes populaires, à la OLMA notamment, ces deux produits sont indissociables. On tient la saucisse grillée d’une main et le Bürli de l’autre et on les déguste alternativement, sans moutarde. Ces pains sont confectionnés à partir de farine mi-blanche et bise, La pâte est très hydratée ce qui leurs confère une mie très alvéolée et goûteuse. Et juste encore quelques mots sur la saucisse de Saint-Gall. La première mention officielle de celle-ci remonte à 1438. Dans les statuts de la société des bouchers de l’époque, il était indiqué que cette saucisse comprenait une part de viande de veau, une de porc et de lard et une de lait frais. J’y ai travaillé dans ce canton, plus précisément dans le Toggenburg et je peux dire que la recette a très peu changé depuis son origine à part quelques petites variantes, comme le lait frais qui s’est transformé en poudre de lait par exemple. Cette saucisse est vraiment délicieuse et il s’en transforme des tonnes par là-bas et elle a même obtenu le label IGP en 2008. On en mangeait tous les jours, plus précisément lors du « znüni », en français : les « neuf heures ».", + self.harvester_class.description(), + )