Skip to content

Commit

Permalink
Merge bcc5884 into 371a49e
Browse files Browse the repository at this point in the history
  • Loading branch information
jknndy committed May 15, 2024
2 parents 371a49e + bcc5884 commit 663a7d7
Show file tree
Hide file tree
Showing 30 changed files with 17,028 additions and 0 deletions.
6 changes: 6 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ Scrapers available for:
- `https://breadtopia.com/ <https://breadtopia.com/>`_
- `https://briceletbaklava.ch/ <https://briceletbaklava.ch/>`_
- `https://budgetbytes.com/ <https://budgetbytes.com>`_
- `https://cafedelites.com/ <https://cafedelites.com/>`_
- `https://carlsbadcravings.com/ <https://carlsbadcravings.com/>`_
- `https://castironketo.net/ <https://castironketo.net/>`_
- `https://cdkitchen.com/ <https://cdkitchen.com/>`_
Expand Down Expand Up @@ -172,6 +173,7 @@ Scrapers available for:
- `https://ethanchlebowski.com/ <https://ethanchlebowski.com>`_
- `https://epicurious.com/ <https://epicurious.com>`_
- `https://www.evolvingtable.com/ <https://www.evolvingtable.com/>`_
- `https://www.familyfoodonthetable.com/ <https://www.familyfoodonthetable.com/>`_
- `https://www.errenskitchen.com/ <https://www.errenskitchen.com/>`_
- `https://recipes.farmhousedelivery.com/ <https://recipes.farmhousedelivery.com/>`_
- `https://www.farmhouseonboone.com/ <https://www.farmhouseonboone.com/>`_
Expand Down Expand Up @@ -275,6 +277,7 @@ Scrapers available for:
- `https://www.marthastewart.com/ <https://www.marthastewart.com/>`_
- `https://matprat.no/ <https://matprat.no/>`_
- `https://www.mccormick.com/ <https://www.mccormick.com/>`_
- `https://www.modernhoney.com/ <https://www.modernhoney.com/>`_
- `https://meljoulwan.com/ <https://meljoulwan.com/>`_
- `https://www.melskitchencafe.com/ <https://www.melskitchencafe.com/>`_
- `http://mindmegette.hu/ <http://mindmegette.hu/>`_
Expand All @@ -285,6 +288,7 @@ Scrapers available for:
- `https://momswithcrockpots.com/ <https://momswithcrockpots.com>`_
- `https://monsieur-cuisine.com/ <https://monsieur-cuisine.com>`_
- `http://motherthyme.com/ <http://motherthyme.com/>`_
- `https://www.momontimeout.com/ <https://www.momontimeout.com/>`_
- `https://www.moulinex.fr/ <https://www.moulinex.fr/>`_
- `https://www.mundodereceitasbimby.com.pt/ <https://www.mundodereceitasbimby.com.pt/>`_
- `https://mybakingaddiction.com/ <https://mybakingaddiction.com>`_
Expand All @@ -298,6 +302,7 @@ Scrapers available for:
- `https://nibbledish.com/ <https://nibbledish.com>`_
- `https://www.nhs.uk/healthier-families/ <https://www.nhs.uk/healthier-families/>`_
- `https://www.nosalty.hu/ <https://www.nosalty.hu>`_
- `https://www.notenoughcinnamon.com/ <https://www.notenoughcinnamon.com/>`_
- `https://nourishedbynutrition.com/ <https://nourishedbynutrition.com/>`_
- `https://www.nrk.no/ <https://www.nrk.no/>`_
- `https://www.number-2-pencil.com/ <https://www.number-2-pencil.com/>`_
Expand Down Expand Up @@ -399,6 +404,7 @@ Scrapers available for:
- `https://tudogostoso.com.br/ <https://www.tudogostoso.com.br/>`_
- `https://twopeasandtheirpod.com/ <http://twopeasandtheirpod.com>`_
- `https://uitpaulineskeuken.nl/ <https://uitpaulineskeuken.nl>`_
- `https://unsophisticook.com/ <https://unsophisticook.com/>`_
- `https://usapears.org/ <https://usapears.org>`_
- `https://www.valdemarsro.dk/ <https://www.valdemarsro.dk/>`_
- `https://vanillaandbean.com/ <https://vanillaandbean.com>`_
Expand Down
12 changes: 12 additions & 0 deletions recipe_scrapers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
from .breadtopia import Breadtopia
from .briceletbaklava import BricelEtBaklava
from .budgetbytes import BudgetBytes
from .cafedelites import CafeDelites
from .carlsbadcravings import CarlsBadCravings
from .castironketo import CastIronKeto
from .cdkitchen import CdKitchen
Expand Down Expand Up @@ -90,6 +91,7 @@
from .errenskitchen import ErrensKitchen
from .ethanchlebowski import EthanChlebowski
from .evolvingtable import EvolvingTable
from .familyfoodonthetable import FamilyfoodOnTheTable
from .farmhousedelivery import FarmhouseDelivery
from .farmhouseonboone import FarmhouseOnBoone
from .fattoincasadabenedetta import FattoInCasaDaBenedetta
Expand Down Expand Up @@ -190,6 +192,8 @@
from .ministryofcurry import MinistryOfCurry
from .misya import Misya
from .mob import Mob
from .modernhoney import ModernHoney
from .momontimeout import MomOnTimeout
from .momswithcrockpots import MomsWithCrockPots
from .monsieurcuisine import MonsieurCuisine
from .motherthyme import MotherThyme
Expand All @@ -205,6 +209,7 @@
from .nibbledish import NibbleDish
from .nihhealthyeating import NIHHealthyEating
from .norecipes import NoRecipes
from .notenoughcinnamon import NotEnoughCinnamon
from .nourishedbynutrition import NourishedByNutrition
from .nrkmat import NRKMat
from .number2pencil import Number2Pencil
Expand Down Expand Up @@ -308,6 +313,7 @@
from .tudogostoso import TudoGostoso
from .twopeasandtheirpod import TwoPeasAndTheirPod
from .uitpaulineskeukennl import UitPaulinesKeukenNL
from .unsophisticook import Unsophisticook
from .usapears import USAPears
from .usdamyplate import USDAMyPlate
from .valdemarsro import Valdemarsro
Expand Down Expand Up @@ -377,6 +383,7 @@
Breadtopia.host(): Breadtopia,
BricelEtBaklava.host(): BricelEtBaklava,
BudgetBytes.host(): BudgetBytes,
CafeDelites.host(): CafeDelites,
CarlsBadCravings.host(): CarlsBadCravings,
CastIronKeto.host(): CastIronKeto,
CdKitchen.host(): CdKitchen,
Expand Down Expand Up @@ -406,6 +413,7 @@
EatLiveRun.host(): EatLiveRun,
ElaVegan.host(): ElaVegan,
EvolvingTable.host(): EvolvingTable,
FamilyfoodOnTheTable.host(): FamilyfoodOnTheTable,
FitSlowCookerQueen.host(): FitSlowCookerQueen,
GourmetTraveller.host(): GourmetTraveller,
GrandFrais.host(): GrandFrais,
Expand All @@ -417,10 +425,13 @@
KristinesKitchenBlog.host(): KristinesKitchenBlog,
KuchynaLidla.host(): KuchynaLidla,
McCormick.host(): McCormick,
ModernHoney.host(): ModernHoney,
MomOnTimeout.host(): MomOnTimeout,
Moulinex.host(): Moulinex,
MundoDeReceitasBimby.host(): MundoDeReceitasBimby,
MyJewishLearning.host(): MyJewishLearning,
MyKoreanKitchen.host(): MyKoreanKitchen,
NotEnoughCinnamon.host(): NotEnoughCinnamon,
NutritionFacts.host(): NutritionFacts,
OneSweetAppetite.host(): OneSweetAppetite,
PinchOfYum.host(): PinchOfYum,
Expand Down Expand Up @@ -665,6 +676,7 @@
TwoPeasAndTheirPod.host(): TwoPeasAndTheirPod,
USAPears.host(): USAPears,
USDAMyPlate.host(): USDAMyPlate,
Unsophisticook.host(): Unsophisticook,
Valdemarsro.host(): Valdemarsro,
VanillaAndBean.host(): VanillaAndBean,
VegRecipesOfIndia.host(): VegRecipesOfIndia,
Expand Down
18 changes: 18 additions & 0 deletions recipe_scrapers/cafedelites.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# mypy: allow-untyped-defs

from ._abstract import AbstractScraper
from ._grouping_utils import group_ingredients


class CafeDelites(AbstractScraper):
@classmethod
def host(cls):
return "cafedelites.com"

def ingredient_groups(self):
return group_ingredients(
self.ingredients(),
self.soup,
".wprm-recipe-group-name",
".wprm-recipe-ingredient",
)
18 changes: 18 additions & 0 deletions recipe_scrapers/familyfoodonthetable.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# mypy: allow-untyped-defs

from ._abstract import AbstractScraper
from ._grouping_utils import group_ingredients


class FamilyfoodOnTheTable(AbstractScraper):
@classmethod
def host(cls):
return "familyfoodonthetable.com"

def ingredient_groups(self):
return group_ingredients(
self.ingredients(),
self.soup,
"h3",
".mv-create-ingredients li",
)
17 changes: 17 additions & 0 deletions recipe_scrapers/modernhoney.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# mypy: allow-untyped-defs

from ._abstract import AbstractScraper
from ._utils import get_equipment


class ModernHoney(AbstractScraper):
@classmethod
def host(cls):
return "modernhoney.com"

def equipment(self):
equipment_items = [
item.get_text()
for item in self.soup.find_all("div", class_="wprm-recipe-equipment-name")
]
return get_equipment(equipment_items)
18 changes: 18 additions & 0 deletions recipe_scrapers/momontimeout.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# mypy: allow-untyped-defs

from ._abstract import AbstractScraper
from ._grouping_utils import group_ingredients


class MomOnTimeout(AbstractScraper):
@classmethod
def host(cls):
return "momontimeout.com"

def ingredient_groups(self):
return group_ingredients(
self.ingredients(),
self.soup,
".wprm-recipe-group-name",
".wprm-recipe-ingredient",
)
18 changes: 18 additions & 0 deletions recipe_scrapers/notenoughcinnamon.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# mypy: allow-untyped-defs

from ._abstract import AbstractScraper
from ._grouping_utils import group_ingredients


class NotEnoughCinnamon(AbstractScraper):
@classmethod
def host(cls):
return "notenoughcinnamon.com"

def ingredient_groups(self):
return group_ingredients(
self.ingredients(),
self.soup,
".wprm-recipe-ingredient-group h4",
".wprm-recipe-ingredient",
)
28 changes: 28 additions & 0 deletions recipe_scrapers/unsophisticook.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# mypy: allow-untyped-defs

from ._abstract import AbstractScraper
from ._grouping_utils import group_ingredients
from ._utils import get_equipment, normalize_string


class Unsophisticook(AbstractScraper):
@classmethod
def host(cls):
return "unsophisticook.com"

def equipment(self):
equipment_items = [
normalize_string(item.get_text())
for item in self.soup.find_all(
"div", class_="mv-create-products-product-name"
)
]
return get_equipment(equipment_items)

def ingredient_groups(self):
return group_ingredients(
self.ingredients(),
self.soup,
".mv-create-ingredients h4",
".mv-create-ingredients li",
)
85 changes: 85 additions & 0 deletions tests/test_data/cafedelites.com/cafedelites_1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
"host": "cafedelites.com",
"canonical_url": "https://cafedelites.com/best-churros-recipe/",
"site_name": "Cafe Delites",
"author": "Karina",
"language": "en-US",
"title": "Churros Recipe",
"ingredients": [
"1/2 cup sugar",
"1/2 teaspoon ground cinnamon",
"4 oz. butter, ((125g or 1/2 cup))",
"1 cup + 2 tablespoons water ((280ml))",
"2 tablespoons white granulated sugar",
"1 teaspoon pure vanilla extract",
"3/4 teaspoon ground cinnamon",
"1/2 teaspoon salt",
"1 1/4 cups all-purpose or plain flour, ((6.3oz | 180g))",
"2 large eggs, (at room temperature)"
],
"ingredient_groups": [
{
"ingredients": [
"1/2 cup sugar",
"1/2 teaspoon ground cinnamon"
],
"purpose": "COATING"
},
{
"ingredients": [
"4 oz. butter, ((125g or 1/2 cup))",
"1 cup + 2 tablespoons water ((280ml))",
"2 tablespoons white granulated sugar",
"1 teaspoon pure vanilla extract",
"3/4 teaspoon ground cinnamon",
"1/2 teaspoon salt",
"1 1/4 cups all-purpose or plain flour, ((6.3oz | 180g))",
"2 large eggs, (at room temperature)"
],
"purpose": "CHURROS"
}
],
"instructions": "PREPARE YOUR WORK STATION\nCombine 1/2 cup sugar and 1/2 teaspoon cinnamon together in a shallow bowl for your cinnamon sugar coating.\nLine a large plate with a double layer of paper towel ready for your cooked churros.\nFill a large pot or deep skillet with 1 1/2 - 2 cups of oil.\nMAKE THE BEST CHURRO DOUGH\nHeat the butter in a medium-sized saucepan. Add in the water, sugar, vanilla, cinnamon and salt. Bring to a simmer for 5 minutes while mixing occasionally. Add in the flour, stirring with a large wooden spoon until well blended and forms a ball.\nTake off heat and allow to cool for 10 minutes, or until just warm to the touch.\nWhile dough is cooling, heat oil over medium-high heat to 360°F (180°C).\nOnce dough has cooled, add one egg, quickly beating until completely incorporated (it will look like it's not coming together, but keep beating)! Add in the second egg and repeat the process until a dough forms.\nScoop dough into a strong double lined pastry bag with a large open star tip nozzle. (I suggest using Wilton 1M or Ateco 845/846.)\nCOOK CHURROS\nLightly oil the blade end of your scissors and set aside. Carefully pipe 5-6-inch long strips of dough into hot oil, cutting the ends with oiled scissors. Fry 4-5 churros at a time to avoid over-crowding your pot.\nFry until golden browned, about 2 minutes each side. Transfer to paper towel lined plate for a few seconds, then roll in the cinnamon sugar.\nRepeat with remaining dough.\nServe warm with melted chocolate or caramel sauce, fruit or ice cream.",
"instructions_list": [
"PREPARE YOUR WORK STATION",
"Combine 1/2 cup sugar and 1/2 teaspoon cinnamon together in a shallow bowl for your cinnamon sugar coating.",
"Line a large plate with a double layer of paper towel ready for your cooked churros.",
"Fill a large pot or deep skillet with 1 1/2 - 2 cups of oil.",
"MAKE THE BEST CHURRO DOUGH",
"Heat the butter in a medium-sized saucepan. Add in the water, sugar, vanilla, cinnamon and salt. Bring to a simmer for 5 minutes while mixing occasionally. Add in the flour, stirring with a large wooden spoon until well blended and forms a ball.",
"Take off heat and allow to cool for 10 minutes, or until just warm to the touch.",
"While dough is cooling, heat oil over medium-high heat to 360°F (180°C).",
"Once dough has cooled, add one egg, quickly beating until completely incorporated (it will look like it's not coming together, but keep beating)! Add in the second egg and repeat the process until a dough forms.",
"Scoop dough into a strong double lined pastry bag with a large open star tip nozzle. (I suggest using Wilton 1M or Ateco 845/846.)",
"COOK CHURROS",
"Lightly oil the blade end of your scissors and set aside. Carefully pipe 5-6-inch long strips of dough into hot oil, cutting the ends with oiled scissors. Fry 4-5 churros at a time to avoid over-crowding your pot.",
"Fry until golden browned, about 2 minutes each side. Transfer to paper towel lined plate for a few seconds, then roll in the cinnamon sugar.",
"Repeat with remaining dough.",
"Serve warm with melted chocolate or caramel sauce, fruit or ice cream."
],
"total_time": 35,
"prep_time": 15,
"cook_time": 20,
"yields": "20 servings",
"image": "https://cafedelites.com/wp-content/uploads/2020/05/Churros-IMAGE-121.jpg",
"description": "Crispy on the outside, buttery soft on the inside, exactly how Churros should be! If you are craving the best churros, then this churros recipe is just what you’ve been waiting for!",
"nutrients": {
"calories": "121 kcal",
"carbohydrateContent": "17 g",
"proteinContent": "1 g",
"fatContent": "5 g",
"saturatedFatContent": "3 g",
"cholesterolContent": "31 mg",
"sodiumContent": "67 mg",
"fiberContent": "1 g",
"sugarContent": "11 g",
"servingSize": "1 serving"
},
"cuisine": "Spanish",
"category": "Dessert",
"keywords": [
"churros"
],
"ratings": 5.0,
"ratings_count": 4.0
}
Loading

0 comments on commit 663a7d7

Please sign in to comment.