private int ParseDetail(PlayerExport player, IElement mainContent, int i, IElement childElement) { if (childElement.ClassList.Contains("se1")) { string title = childElement.InnerHtml; IElement valueElement = mainContent.Children[++i]; if (valueElement.ClassList.Contains("se2")) { string value = valueElement.Text(); TrySetField <int>(title, value, "ID hráče", val => player.Info.Id = val); TrySetField <string>(title, value, "Jméno", val => player.Info.Name = val); TrySetField <string>(title, value, "Národnost", val => player.Info.Nationality = val); TrySetField <int>(title, value, "Věk", val => player.Info.Age = val); TrySetField <string>(title, value, "Pozice", val => { if (val.StartsWith("Brankář", StringComparison.InvariantCultureIgnoreCase)) { player.Info.Position = PlayerPosition.Goalkeeper; } else if (val.StartsWith("Obránce", StringComparison.InvariantCultureIgnoreCase)) { player.Info.Position = PlayerPosition.Defender; } else if (val.StartsWith("Křídlo", StringComparison.InvariantCultureIgnoreCase)) { player.Info.Position = PlayerPosition.Winger; } else if (val.StartsWith("Střední záložník", StringComparison.InvariantCultureIgnoreCase)) { player.Info.Position = PlayerPosition.Midfielder; } else if (val.StartsWith("Útočník", StringComparison.InvariantCultureIgnoreCase)) { player.Info.Position = PlayerPosition.Forwarder; } }); TrySetField <int>(title, value, "Výška", val => player.Info.Height = val); TrySetField <decimal>(title, value, "Cena", val => player.Info.Price = val); TrySetField <decimal>(title, value, "Plat", val => player.Info.Salary = val); TrySetField <int>(title, value, "Potenciál", val => player.Info.Potential = val); TrySetField <string>(title, value, "V klubu od", val => { string[] parts = val.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); player.Info.SignedAt = DateTime.Parse(parts[0]); player.Info.IsHome = parts.Length == 2; }); } } return(i); }
public PlayerExport ParsePlayerDetail(string htmlBody) { var parser = new AngleSharp.Html.Parser.HtmlParser(); IHtmlDocument document = parser.ParseDocument(htmlBody); PlayerExport player = new PlayerExport(); IElement mainContent = document.QuerySelector(".main_left"); for (int i = 0; i < mainContent.Children.Length; i++) { IElement childElement = mainContent.Children[i]; i = ParseDetail(player, mainContent, i, childElement); i = ParseQuality(player.Quality, mainContent, i, childElement); ParseStats(player, childElement); } return(player); }
private void ParseStats(PlayerExport player, IElement childElement) { if (childElement.TagName.Equals("table", StringComparison.InvariantCultureIgnoreCase)) { foreach (IElement rowElement in childElement.QuerySelectorAll("tr")) { string title = rowElement.Children[0].Text(); if (title == "Liga") { SetStatsGroup(player.CurrentSeasonStats.League, rowElement.Children[1].Text()); SetStatsGroup(player.PreviousSeasonStats.League, rowElement.Children[2].Text()); SetStatsGroup(player.SumStats.League, rowElement.Children[3].Text()); } else if (title == "Pohár") { SetStatsGroup(player.CurrentSeasonStats.Cup, rowElement.Children[1].Text()); SetStatsGroup(player.PreviousSeasonStats.Cup, rowElement.Children[2].Text()); SetStatsGroup(player.SumStats.Cup, rowElement.Children[3].Text()); } else if (title == "Přátelské zápasy") { SetStatsGroup(player.CurrentSeasonStats.Friendly, rowElement.Children[1].Text()); SetStatsGroup(player.PreviousSeasonStats.Friendly, rowElement.Children[2].Text()); SetStatsGroup(player.SumStats.Friendly, rowElement.Children[3].Text()); } else if (title == "Mezinárodní poháry") { SetStatsGroup(player.CurrentSeasonStats.InternationalCups, rowElement.Children[1].Text()); SetStatsGroup(player.PreviousSeasonStats.InternationalCups, rowElement.Children[2].Text()); SetStatsGroup(player.SumStats.InternationalCups, rowElement.Children[3].Text()); } else if (title == "Reprezentace") { SetStatsGroup(player.CurrentSeasonStats.NationalTeam, rowElement.Children[1].Text()); SetStatsGroup(player.PreviousSeasonStats.NationalTeam, rowElement.Children[2].Text()); SetStatsGroup(player.SumStats.NationalTeam, rowElement.Children[3].Text()); } } } }