Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for ica.se #584

Merged
merged 1 commit into from Aug 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions README.rst
Expand Up @@ -167,6 +167,7 @@ Scrapers available for:
- `https://www.hellofresh.nl/ <https://www.hellofresh.nl/>`_
- `https://www.homechef.com/ <https://www.homechef.com/>`_
- `https://hostthetoast.com/ <https://hostthetoast.com/>`_
- `https://www.ica.se/ <https://www.ica.se/>`_
- `https://receitas.ig.com.br/ <https://receitas.ig.com.br>`_
- `https://www.im-worthy.com/ <https://www.im-worthy.com>`_
- `https://indianhealthyrecipes.com <https://www.indianhealthyrecipes.com>`_
Expand Down
2 changes: 2 additions & 0 deletions recipe_scrapers/__init__.py
Expand Up @@ -87,6 +87,7 @@
from .homechef import HomeChef
from .hostthetoast import Hostthetoast
from .hundredandonecookbooks import HundredAndOneCookbooks
from .ica import Ica
from .ig import IG
from .imworthy import ImWorthy
from .indianhealthyrecipes import IndianHealthyRecipes
Expand Down Expand Up @@ -297,6 +298,7 @@
HomeChef.host(): HomeChef,
Hostthetoast.host(): Hostthetoast,
HundredAndOneCookbooks.host(): HundredAndOneCookbooks,
Ica.host(): Ica,
ImWorthy.host(): ImWorthy,
IG.host(): IG,
IndianHealthyRecipes.host(): IndianHealthyRecipes,
Expand Down
43 changes: 43 additions & 0 deletions recipe_scrapers/ica.py
@@ -0,0 +1,43 @@
from ._abstract import AbstractScraper


class Ica(AbstractScraper):
@classmethod
def host(cls):
return "ica.se"

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

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

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

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

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

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

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

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

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

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

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

def nutrients(self):
return self.schema.nutrients()
367 changes: 367 additions & 0 deletions tests/test_data/ica.testhtml

Large diffs are not rendered by default.

75 changes: 75 additions & 0 deletions tests/test_ica.py
@@ -0,0 +1,75 @@
from recipe_scrapers.ica import Ica
from tests import ScraperTest


class TestIcaScraper(ScraperTest):

scraper_class = Ica

def test_host(self):
self.assertEqual("ica.se", self.harvester_class.host())

def test_author(self):
self.assertEqual("ICA Köket", self.harvester_class.author())

def test_title(self):
self.assertEqual("Lysande gul fiskgryta", self.harvester_class.title())

def test_category(self):
self.assertEqual("Huvudrätt,Middag", self.harvester_class.category())

def test_total_time(self):
self.assertEqual(45, self.harvester_class.total_time())

def test_yields(self):
self.assertEqual("4 servings", self.harvester_class.yields())

def test_image(self):
self.assertEqual("https://assets.icanet.se/t_ICAseAbsoluteUrl/imagevaultfiles/id_63144/cf_259/lysande_gul_fiskgryta.jpg", self.harvester_class.image())

def test_ingredients(self):
self.assertEqual(
['400 g torskfilé, sej eller hoki',
'300 g laxfilé',
'1/2 purjolök',
'1/2 gul lök',
'1 msk smör',
'1 vitlöksklyfta',
'1 1/2 tsk tomatpuré',
'1 tsk timjan',
'1 tsk basilika',
'2 1/2 dl torrt vitt vin',
'1 1/2 fiskbuljongtärning',
'2 dl vispgrädde',
'1 dl crème fraiche',
'2 dl vatten',
'1 pkt saffran (à 0,5 g)',
'1 1/2 tsk salt',
'300 g räkor med skal',
'1 burk musslor (à 150 g)',
'ev. bröd och vitlöksmajonnäs'],
self.harvester_class.ingredients()
)

def test_instructions(self):
self.assertEqual("Tina fisken om den är fryst. Skölj och strimla purjon. Skala och hacka löken.\n"
"Smält smöret i en stor gryta eller tjockbottnad kastrull. Fräs löken och purjol"
"öken ett par minuter tills de blivit glansiga och genomskinliga. Pressa i vitlö"
"k. Rör ner tomatpuré, timjan och basilika. Låt detta fräsa med en kort stund.\n"
"Tillsätt vin och buljongtärning. Koka ett par minuter. Rör ner grädde, crème fr"
"aiche, vatten och saffran. Sjud i 15 minuter. Smaka av med salt.\nSkär fisken i"
" munsbitar, lägg i grytan och sjud i ytterligare 7 minuter.\nSkala räkorna. Til"
"lsätt dem och de avrunna musslorna.\xa0\nServeringsförslag:\xa0Hetta upp och se"
"rvera genast, gärna med bröd och vitlöksmajonnäs.", self.harvester_class.instructions())

def test_ratings(self):
self.assertEqual(4.5, self.harvester_class.ratings())

def test_cuisine(self):
self.assertEqual('', self.harvester_class.cuisine())

def test_description(self):
self.assertEqual("Denna fiskgryta får sin lysande solgula färg och ljuvliga smak av saffran, vitl"
"ök och tomatpuré. Grytan blir matig och mättande med lax, torsk, räkor och muss"
"lor och passar perfekt att bjuda på till en lite festligare middag med eller ut"
"an gäster.", self.harvester_class.description())