Skip to content

Commit

Permalink
Add felix.kitchen
Browse files Browse the repository at this point in the history
  • Loading branch information
mlduff committed Apr 26, 2024
1 parent 57ac5ee commit e9c1441
Show file tree
Hide file tree
Showing 4 changed files with 1,583 additions and 0 deletions.
2 changes: 2 additions & 0 deletions recipe_scrapers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
from .farmhousedelivery import FarmhouseDelivery
from .farmhouseonboone import FarmhouseOnBoone
from .fattoincasadabenedetta import FattoInCasaDaBenedetta
from .felixkitchen import FelixKitchen
from .fifteenspatulas import FifteenSpatulas
from .finedininglovers import FineDiningLovers
from .fitmencook import FitMenCook
Expand Down Expand Up @@ -418,6 +419,7 @@
FarmhouseDelivery.host(): FarmhouseDelivery,
FarmhouseOnBoone.host(): FarmhouseOnBoone,
FattoInCasaDaBenedetta.host(): FattoInCasaDaBenedetta,
FelixKitchen.host(): FelixKitchen,
FifteenSpatulas.host(): FifteenSpatulas,
FineDiningLovers.host(): FineDiningLovers,
FitMenCook.host(): FitMenCook,
Expand Down
81 changes: 81 additions & 0 deletions recipe_scrapers/felixkitchen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# mypy: allow-untyped-defs

from ._abstract import AbstractScraper
from ._utils import normalize_string


class FelixKitchen(AbstractScraper):
@classmethod
def host(cls):
return "felix.kitchen"

def author(self):
return "FEL!X KITCHEN"

def title(self):
found = self.soup.find("meta", {"property": "og:title"})
return normalize_string(found.get("content"))

def category(self):
return self.schema.category()

def total_time(self):
return None

def yields(self):
heading_p = self.soup.find("p", {"class": "ti"})
container_p = heading_p.find_next_sibling("p")
yields_strong = container_p.find("strong")
return yields_strong.text

def image(self):
return self.schema.image()

def ingredients(self):
ingredients = []

step_divs = self._get_step_divs()
for step_div in step_divs:
ingredients_div = step_div.find("div")
ingredients_em_list = ingredients_div.find_all("em")
for ingredients_em in ingredients_em_list:
ingredients_text = normalize_string(ingredients_em.text).lstrip("• ")
ingredients.extend(ingredients_text.split("• "))

return ingredients

def instructions(self):
instruction_lines = []

step_divs = self._get_step_divs()
for step_div in step_divs:
instructions_div = step_div.find_all("div")[1]
instructions_p_list = instructions_div.find_all("p")
for instruction_p in instructions_p_list:
for br in instruction_p.find_all("br"):
br.replace_with("\n")

lines = instruction_p.text.split("\n")
for line in lines:
instruction_lines.append(normalize_string(line))

return "\n".join(instruction_lines)

def ratings(self):
return None

def cuisine(self):
return None

def description(self):
content_div = self.soup.find("div", {"class": "entry-content"})
lines = []
for child in content_div.findChildren(recursive=False):
if child.name != "p":
break

lines.append(child.text)
return "\n".join(lines)

def _get_step_divs(self):
return self.soup.select('div[class*="wp-block-columns is-layout-flex"]')
66 changes: 66 additions & 0 deletions tests/test_data/felix.kitchen/felixkitchen.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"author": "FEL!X KITCHEN",
"canonical_url": "https://felix.kitchen/2024/04/07/piccata-milanese-schnitzel-parmesan-safran-risotto-petersilie/",
"host": "felix.kitchen",
"description": "Ob das Schnitzel nach Mailänder-Art original italienisch ist, oder ob die Panade nördlich der Alpen mit Parmesan sozusagen «italienisiert» wurde, bleibt dahingestellt.\nTatsache ist: die so umhüllten und gebratenen Schnitzelchen sind ganz einfach lecker! Und was könnte dazu besser passen, als ein goldgelber Safran-Risotto?!",
"image": "https://felix.kitchen/wp-content/uploads/2023/09/piccata_milanese_beitragsbild.jpg",
"ingredients": [
"15 g Parmesan am Stück",
"1/2 unbehandelte Zitrone",
"1 Ei (kl.)",
"1 EL Wasser",
"1–2 EL Weizen­mehl",
"1 TL Senf, mittel­scharf",
"Salz, Pfeffer aus der Mühle",
"2 Kalbs- oder Schweine­schnitzel à ca. 125 g",
"Salz, Pfeffer aus der Mühle",
"Weizen- oder Reismehl",
"1 EL Olivenöl",
"1 EL Butter",
"etwas glatte Peter­­silie"
],
"ingredient_groups": [
{
"ingredients": [
"15 g Parmesan am Stück",
"1/2 unbehandelte Zitrone",
"1 Ei (kl.)",
"1 EL Wasser",
"1–2 EL Weizen­mehl",
"1 TL Senf, mittel­scharf",
"Salz, Pfeffer aus der Mühle",
"2 Kalbs- oder Schweine­schnitzel à ca. 125 g",
"Salz, Pfeffer aus der Mühle",
"Weizen- oder Reismehl",
"1 EL Olivenöl",
"1 EL Butter",
"etwas glatte Peter­­silie"
],
"purpose": null
}
],
"instructions": "1PICCATA-TEIG:\nParmesan sehr fein reiben (Micro-Zestenreibe!), ebenfalls die Schale der halben Zitrone.\nMit den weiteren Zutaten mischen, kurz ruhen lassen.\nDer Teig sollte nicht allzu dick sein.\n2Fleisch nach Belieben in kleinere Stücke schneiden, zwischen Klarsichtfolie leicht plattieren, es sollte nicht zu dünn werden (Fleischklopfer oder Pfannenboden).\nSaft der Zitronenhälfte auspressen, das Fleisch darin kurz marinieren.\nKann bis hierher vorbereitet werden!\n3Fleisch zwischen Küchen­papier trocknen, würzen.\nIm Mehl wenden, dann durch den Teig ziehen, was am ein­fachsten mit der Koch­pinzette geschieht.\n4Portionenweise in der Öl-Butter-Mischung beidseitig ausbacken.\nAuf Küchenpapier abtropfen lassen.\nIm Ofen bei 80 °C (O+U) warm stellen.\n5Währenddessen einen Safran-Risotto zubereiten, siehe hier.\n6Risotto zusammen mit der Piccata anrichten.\nMit gehackter Petersilie bestreuen.\nnicht scharf",
"instructions_list": [
"1PICCATA-TEIG:",
"Parmesan sehr fein reiben (Micro-Zestenreibe!), ebenfalls die Schale der halben Zitrone.",
"Mit den weiteren Zutaten mischen, kurz ruhen lassen.",
"Der Teig sollte nicht allzu dick sein.",
"2Fleisch nach Belieben in kleinere Stücke schneiden, zwischen Klarsichtfolie leicht plattieren, es sollte nicht zu dünn werden (Fleischklopfer oder Pfannenboden).",
"Saft der Zitronenhälfte auspressen, das Fleisch darin kurz marinieren.",
"Kann bis hierher vorbereitet werden!",
"3Fleisch zwischen Küchen­papier trocknen, würzen.",
"Im Mehl wenden, dann durch den Teig ziehen, was am ein­fachsten mit der Koch­pinzette geschieht.",
"4Portionenweise in der Öl-Butter-Mischung beidseitig ausbacken.",
"Auf Küchenpapier abtropfen lassen.",
"Im Ofen bei 80 °C (O+U) warm stellen.",
"5Währenddessen einen Safran-Risotto zubereiten, siehe hier.",
"6Risotto zusammen mit der Piccata anrichten.",
"Mit gehackter Petersilie bestreuen.",
"nicht scharf"
],
"language": "de-DE",
"site_name": "FEL!X KITCHEN",
"title": "PICCATA ALLA MILANESE",
"total_time": null,
"yields": "2 Portionen als Hauptgericht"
}
Loading

0 comments on commit e9c1441

Please sign in to comment.