You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

38 lines
1.4 KiB

from ..schema import Schema
from ..selector import Selector, AnySelector, AttrSelector
class RecipeSchema(Schema):
# Publish data
author = Selector('[itemprop=author]')
categories = Selector('[itemprop=recipeCategory]', as_list=True)
description = AnySelector([
Selector('[itemprop=description]'),
Selector('[name=og:description]'),
Selector('[name=description]')
], required=True)
name = AnySelector([
Selector('[itemprop=name]'),
Selector('[property=og:title]')
], required=True)
recipe_yield = Selector('[itemprop=recipeYield]')
# Recipe instructions
ingredients = AnySelector([
Selector('[itemprop=recipeIngredient]', as_list=True),
Selector('[itemprop=ingredients]', as_list=True),
], required=True)
instructions = Selector('[itemprop=recipeInstructions]', as_list=True, required=True)
# Cooking time
cook_time = AttrSelector('[itemprop=cookTime]', 'datetime')
prep_time = AttrSelector('[itemprop=prepTime]', 'datetime')
total_time = AttrSelector('[itemprop=totalTime]', 'datetime')
# Nutrition
calories = Selector('[itemprop=calories]')
carbohydrate_content = Selector('[itemprop=carbohydrateContent]')
cholesterol_content = Selector('[itemprop=cholesterolContent]')
fat_content = Selector('[itemprop=fatContent]')
protein_content = Selector('[itemprop=proteinContent]')
sodium_content = Selector('[itemprop=sodiumContent]')