private static PlayerLineup AddPlayersToLineup(HtmlNodeCollection valuesNodes, int round, HomeOrAway homeOrAway, string team) { var playerLineup = new PlayerLineup(); for (int i = 0; i < valuesNodes.Count; i += 11) { playerLineup.Round = round; playerLineup.HomeOrAway = homeOrAway; playerLineup.Team = team; playerLineup.Players.Add( new Player( valuesNodes[i + 2].InnerText, valuesNodes[i].InnerText.TrimEnd('.'), valuesNodes[i + 1].InnerText) ); } var goalies = playerLineup.Players .Where(x => x.PlayerPosition == Position.Målvakt.ToString()) .OrderByDescending(x => x.PlayerNumber).ToList(); foreach (var item in goalies) { playerLineup.Players.Remove(item); playerLineup.Players.Insert(0, item); } return(playerLineup); }
public static List <PlayerLineup> GetPlayerLineupList(List <GameRounds> gameRoundsList, int selectedRound) { var web = new HtmlWeb(); var playerLineupList = new List <PlayerLineup>(); foreach (var round in gameRoundsList.Where(x => x.Round == selectedRound)) { Console.WriteLine(round.TeamHome + "-" + round.TeamAway); Thread.Sleep(1000); // Do not spam the server plz var doc = web.Load(round.LinkToLineup); var homeNode = doc.DocumentNode.SelectNodes("//*[@class='clCommonGrid tablesorter noMarginBottom']").FirstOrDefault(); var htmlAwayNode = doc.DocumentNode.SelectNodes("//*[@class='clCommonGrid tablesorter noMarginBottom']"); var awayNode = (htmlAwayNode != null && htmlAwayNode.Count == 2) ? htmlAwayNode.LastOrDefault() : null; var homeValuesNodes = homeNode?.SelectNodes($"{homeNode.XPath}/tbody/tr/td"); var awayValuesNodes = awayNode?.SelectNodes($"{awayNode.XPath}/tbody/tr/td"); if (homeValuesNodes != null) { var playerLineup = AddPlayersToLineup(homeValuesNodes, round.Round, HomeOrAway.Hemma, round.TeamHome); playerLineupList.Add(playerLineup); } else { var playerLineup = new PlayerLineup() { Round = round.Round, HomeOrAway = HomeOrAway.Borta, Team = round.TeamHome, }; playerLineupList.Add(playerLineup); } if (awayValuesNodes != null) { var playerLineup = AddPlayersToLineup(awayValuesNodes, round.Round, HomeOrAway.Borta, round.TeamAway); playerLineupList.Add(playerLineup); } else { var playerLineup = new PlayerLineup { Round = round.Round, HomeOrAway = HomeOrAway.Borta, Team = round.TeamAway, }; playerLineupList.Add(playerLineup); } } return(playerLineupList); }