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]')