Exemplo n.º 1
0
        private async Task ProcessRecipe(string url, ParsingContext context, IParsingLogic logic)
        {
            IDocument page = null;

            try
            {
                page = await HtmlLoader.LoadAsync(url);
            }
            catch
            {
                Console.WriteLine($"Error downloading page {url}");
                return;
            }

            try
            {
                var ingredients = context.GetIngredients(logic, page);
                var id          = context.GetId(logic, page);

                if (ingredients.Select(i => i.name).Distinct().Count() != ingredients.Count())
                {
                    return;
                }

                if (RecipeDBProvider.RecipeExists(id))
                {
                    RecipeDBProvider.UpdateRecipe(id, context.GetDishName(logic, page), context.GetCookTime(logic, page), context.GetCuisine(logic, page),
                                                  context.GetType(logic, page), context.GetPortionAmount(logic, page), context.GetPictureUrl(logic, page), context.GetSteps(logic, page), context.GetWebSite());
                }
                else
                {
                    RecipeDBProvider.AddRecipe(id, context.GetDishName(logic, page), context.GetCookTime(logic, page), context.GetCuisine(logic, page),
                                               context.GetType(logic, page), context.GetPortionAmount(logic, page), context.GetPictureUrl(logic, page), context.GetSteps(logic, page), context.GetWebSite(), ingredients.Count());

                    foreach (var ingredient in ingredients)
                    {
                        if (!RecipeDBProvider.IngredientExists(ingredient.name))
                        {
                            RecipeDBProvider.AddIngredient(ingredient.name);
                        }

                        RecipeDBProvider.AddRecipeIngredient(id, ingredient.name, ingredient.amount);
                    }
                }
            }
            catch (Exception exc)
            {
                Console.WriteLine($"Error occured during page parsing: {exc.Message}");
            }
        }
Exemplo n.º 2
0
 public virtual IList <(string name, string amount)> GetIngredients(IParsingLogic logic, IDocument page) => logic.GetIngredients(page);
Exemplo n.º 3
0
 public virtual string GetPictureUrl(IParsingLogic logic, IDocument page) => logic.GetPictureUrl(page);
Exemplo n.º 4
0
 public virtual int GetPortionAmount(IParsingLogic logic, IDocument page) => logic.GetPortionAmount(page);
Exemplo n.º 5
0
 public virtual string GetCuisine(IParsingLogic logic, IDocument page) => logic.GetCuisine(page);
Exemplo n.º 6
0
 public virtual int GetCookTime(IParsingLogic logic, IDocument page) => logic.GetCookTime(page);
Exemplo n.º 7
0
 public virtual string GetDishName(IParsingLogic logic, IDocument page) => logic.GetDishName(page);