public static DataObjects.MatchDetails GetMatchStatisticsFromLivescore(string url)
        {
            var awayDetails  = new DataObjects.TeamDetails();
            var homeDetails  = new DataObjects.TeamDetails();
            var matchDetails = new DataObjects.MatchDetails();
            var dom          = CQ.CreateFromUrl(url);

            string homeTeam = dom["[data-type=home-team]"].Text();
            string awayTeam = dom["[data-type=away-team]"].Text();

            int homeGoals = int.Parse(dom[".sco [data-type=home]"].Text());
            int awayGoals = int.Parse(dom[".sco [data-type=away]"].Text());



            return(matchDetails);
        }
        public static DataObjects.TeamDetails FillTheRightField(string fieldName, int fieldValue,
                                                                DataObjects.TeamDetails details)
        {
            switch (fieldName.ToUpper())
            {
            case "ASSISTS":
                details.Assists = fieldValue;
                break;

            case "FREE KICKS":
                details.FreeKicks = fieldValue;
                break;

            case "PENALTIES":
                details.Penalties = fieldValue;
                break;

            case "TOTAL SHOTS":
                details.TotalShots = fieldValue;
                break;

            case "SHOTS ON TARGET":
                details.OnTarget = fieldValue;
                break;

            case "SHOTS OFF TARGET":
                details.OffTarget = fieldValue;
                break;

            case "CROSSES":
                details.Crossses = fieldValue;
                break;

            case "CORNERS":
                details.Corners = fieldValue;
                break;

            case "THROW INS":
                details.ThrowIns = fieldValue;
                break;

            case "SAVES":
                details.Saves = fieldValue;
                break;

            case "BLOCKS":
                details.Blocks = fieldValue;
                break;

            case "CLEARANCES":
                details.Clearances = fieldValue;
                break;

            case "OFFSIDES":
                details.Offsides = fieldValue;
                break;

            case "HANDBALLS":
                details.Handballs = fieldValue;
                break;

            case "FOULS":
                details.Fouls = fieldValue;
                break;

            case "YELLOW CARDS":
                details.YellowCards = fieldValue;
                break;

            case "RED CARDS":
                details.RedCards = fieldValue;
                break;
            }

            return(details);
        }
        public static DataObjects.MatchDetails GetMatchStatistics(string url)
        {
            var awayDetails  = new DataObjects.TeamDetails();
            var homeDetails  = new DataObjects.TeamDetails();
            var matchDetails = new DataObjects.MatchDetails();

            var dom          = CQ.CreateFromUrl(url);
            var homeTeamName = dom[".club.home"].Text();
            var awayTeamName = dom[".club.away"].Text();
            var date         = dom[".fixtureinfo"].Text().Split('|').First().Trim();

            matchDetails.Date = DateTime.Parse(date);
            homeDetails.Name  = homeTeamName;
            awayDetails.Name  = awayTeamName;

            var allRelevantSections = dom[".statsTable .contentTable tr"].ToList();

            for (int i = 0; i < allRelevantSections.Count; i = i + 3)
            {
                var parameters     = allRelevantSections[i].ChildElements.Select(x => x.Cq().Text()).Skip(1).ToList();
                var homeParameters = allRelevantSections[i + 1].ChildElements.Select(x => x.Cq().Text()).Skip(1).ToList();
                var awayParameters = allRelevantSections[i + 2].ChildElements.Select(x => x.Cq().Text()).Skip(1).ToList();
                for (int j = 0; j < parameters.Count; j++)
                {
                    var parameter = parameters[j];
                    var homeValue = int.Parse(homeParameters[j]);
                    var awayValue = int.Parse(awayParameters[j]);
                    FillTheRightField(parameter, homeValue, homeDetails);
                    FillTheRightField(parameter, awayValue, awayDetails);
                }
            }

            var homeGoals = dom[".homeScore"].Text();
            var awayGoals = dom[".awayScore"].Text();

            homeDetails.Goals = int.Parse(homeGoals);
            awayDetails.Goals = int.Parse(awayGoals);

            var homeGoalsDetails = dom[".home.goals li"].Select(x => x.Cq().Text());
            var awayGoalsDetails = dom[".away.goals li"].Select(x => x.Cq().Text());

            homeDetails.GoalsDetails = new List <DataObjects.Goal>();
            awayDetails.GoalsDetails = new List <DataObjects.Goal>();

            foreach (var homeGoalsDetail in homeGoalsDetails)
            {
                var goalsToAdd = GetGoalsFromString(homeGoalsDetail);
                homeDetails.GoalsDetails.AddRange(goalsToAdd);
            }

            foreach (var awayGoalsDetail in awayGoalsDetails)
            {
                var goalsToAdd = GetGoalsFromString(awayGoalsDetail);
                awayDetails.GoalsDetails.AddRange(goalsToAdd);
            }

            matchDetails.AwayTeam = awayDetails;
            matchDetails.HomeTeam = homeDetails;

            return(matchDetails);
        }
Ejemplo n.º 4
0
        public static DataObjects.MatchDetails GetMatchStatistics(string url)
        {
            var awayDetails  = new DataObjects.TeamDetails();
            var homeDetails  = new DataObjects.TeamDetails();
            var matchDetails = new DataObjects.MatchDetails();

            var dom  = CQ.CreateFromUrl(url);
            var date = dom[".fixture__date"].Text().Replace("Sept", "sep");

            matchDetails.Date = DateTime.ParseExact(date, "ddd dd MMM yyyy", new CultureInfo("us"));

            var matchHeaderQuery = ".match-overview-header";
            var teamNames        = matchHeaderQuery + " " + ".fixture__team-name--HorA";

            homeDetails.Name = dom[teamNames.Replace("HorA", "home")].Text();
            awayDetails.Name = dom[teamNames.Replace("HorA", "away")].Text();

            var score = matchHeaderQuery + " " + ".fixture__number--HorA";

            homeDetails.Goals = int.Parse(dom[score.Replace("HorA", "home")].Text());
            awayDetails.Goals = int.Parse(dom[score.Replace("HorA", "away")].Text());

            var scorersQuery = matchHeaderQuery + " " + ".fixture__scorers-HorA";
            var homeScorers  = dom[scorersQuery.Replace("HorA", "home")]
                               .Select(x => x.Cq().Text())
                               .Where(x => !string.IsNullOrEmpty(x))
                               .SelectMany(x => x.Split('Â').ToList())
                               .Where(x => !x.Contains("Dismissed"))
                               .Select(Helper.RemoveDiacritics)
                               .Select(Helper.NormalizePlayerName)
                               .ToList();
            var homeGoals   = GetGoalsForTeam(homeScorers);
            var awayScorers = dom[scorersQuery.Replace("HorA", "away")]
                              .Select(x => x.Cq().Text())
                              .Where(x => !string.IsNullOrEmpty(x))
                              .SelectMany(x => x.Split('Â').ToList())
                              .Where(x => !x.Contains("Dismissed"))
                              .Select(Helper.RemoveDiacritics)
                              .Select(Helper.NormalizePlayerName)
                              .ToList();
            var awayGoals = GetGoalsForTeam(awayScorers);

            homeDetails.GoalsDetails = homeGoals;
            awayDetails.GoalsDetails = awayGoals;

            var percentageRowQuery = ".percentage-row";
            var relevantDetails    = dom[percentageRowQuery].ToList();

            try
            {
                var possesion          = relevantDetails.First(x => x.Cq().Text().Contains("Possession"));
                var possessionElements = possesion.ChildElements.ToList();
                homeDetails.Possession = int.Parse(possessionElements[1].Cq().Text().Replace("Home", "").Trim().Trim('%'));
                awayDetails.Possession = int.Parse(possessionElements.Last().Cq().Text().Replace("Away", "").Trim().Trim('%'));

                var totalShots         = relevantDetails.First(x => x.Cq().Text().Contains("Shots"));
                var totalShotsElements = totalShots.ChildElements.ToList();
                homeDetails.TotalShots = int.Parse(totalShotsElements[1].Cq().Text().Replace("Home", ""));
                awayDetails.TotalShots = int.Parse(totalShotsElements.Last().Cq().Text().Replace("Away", ""));


                var shotsOnTarget         = relevantDetails.First(x => x.Cq().Text().Contains("Shots on Target"));
                var shotsOnTargetElements = shotsOnTarget.ChildElements.ToList();
                homeDetails.OnTarget = int.Parse(shotsOnTargetElements[1].Cq().Text().Replace("Home", ""));
                awayDetails.OnTarget = int.Parse(shotsOnTargetElements.Last().Cq().Text().Replace("Away", ""));

                var corners          = relevantDetails.First(x => x.Cq().Text().Contains("Corners"));
                var cornernsElements = corners.ChildElements.ToList();
                homeDetails.Corners = int.Parse(cornernsElements[1].Cq().Text().Replace("Home", ""));
                awayDetails.Corners = int.Parse(cornernsElements.Last().Cq().Text().Replace("Away", ""));

                var fouls         = relevantDetails.First(x => x.Cq().Text().Contains("Fouls"));
                var foulsElements = fouls.ChildElements.ToList();
                homeDetails.Fouls = int.Parse(foulsElements[1].Cq().Text().Replace("Home", ""));
                awayDetails.Fouls = int.Parse(foulsElements.Last().Cq().Text().Replace("Away", ""));
            }
            catch (Exception)
            {
                Console.WriteLine("No Stats for this match!");
            }

            matchDetails.HomeTeam = homeDetails;
            matchDetails.AwayTeam = awayDetails;

            return(matchDetails);
        }
Ejemplo n.º 5
0
        public static DataObjects.MatchDetails GetMatchStatisticsFromEspn(string url)
        {
            var awayDetails  = new DataObjects.TeamDetails();
            var homeDetails  = new DataObjects.TeamDetails();
            var matchDetails = new DataObjects.MatchDetails();

            var summaryPage    = url.Replace("matchstats", "match");
            var summaryPageDom = CQ.CreateFromUrl(summaryPage);
            var title          = summaryPageDom["title"].Text();
            var dateStr        = title.Split('-')[2].Trim();

            matchDetails.Date = DateTime.Parse(dateStr);

            if (matchDetails.Date > DateTime.Today)
            {
                return(null);
            }

            var dom = CQ.CreateFromUrl(url);

            homeDetails.Name = dom[".team.away .long-name"].Text();
            awayDetails.Name = dom[".team.home .long-name"].Text();

            homeDetails.Goals = int.Parse(dom[".score-container [data-home-away=home]"].Text());
            awayDetails.Goals = int.Parse(dom[".score-container [data-home-away=away]"].Text());

            var awayScorers = dom[".team.home [data-event-type=goal]"]
                              .Select(x => x.Cq().Text().Trim())
                              .SelectMany(x => x.Split(')').ToList())
                              .Where(x => !string.IsNullOrEmpty(x))
                              .Select(Helper.RemoveDiacritics)
                              .Select(Helper.NormalizePlayerName)
                              .ToList();

            var awayGoals   = GetGoalsForTeam(awayScorers);
            var homeScorers = dom[".team.away [data-event-type=goal]"]
                              .Select(x => x.Cq().Text().Trim())
                              .SelectMany(x => x.Split(')').ToList())
                              .Where(x => !string.IsNullOrEmpty(x))
                              .Select(Helper.RemoveDiacritics)
                              .Select(Helper.NormalizePlayerName)
                              .ToList();


            var homeGoals = GetGoalsForTeam(homeScorers);

            homeDetails.GoalsDetails = homeGoals;
            awayDetails.GoalsDetails = awayGoals;

            homeDetails.Possession = int.Parse(dom[".possession [data-home-away=home]"].First().Text().Replace("%", "").Trim());
            awayDetails.Possession = int.Parse(dom[".possession [data-home-away=away]"].First().Text().Replace("%", "").Trim());

            var homeShots = dom[".shots [data-home-away=home]"].First().Text();

            homeDetails.TotalShots = int.Parse(homeShots.Split('(').First());
            homeDetails.OnTarget   = int.Parse(homeShots.Split('(').Last().Replace(")", "").Trim());

            var awayShots = dom[".shots [data-home-away=away]"].First().Text();

            awayDetails.TotalShots = int.Parse(awayShots.Split('(').First());
            awayDetails.OnTarget   = int.Parse(awayShots.Split('(').Last().Replace(")", "").Trim());

            homeDetails.Fouls = int.Parse(dom["[data-stat=foulsCommitted]"].First().Text());
            awayDetails.Fouls = int.Parse(dom["[data-stat=foulsCommitted]"].Last().Text());

            homeDetails.YellowCards = int.Parse(dom["[data-stat=yellowCards]"].First().Text());
            awayDetails.YellowCards = int.Parse(dom["[data-stat=yellowCards]"].Last().Text());

            homeDetails.RedCards = int.Parse(dom["[data-stat=redCards]"].First().Text());
            awayDetails.RedCards = int.Parse(dom["[data-stat=redCards]"].Last().Text());

            homeDetails.Offsides = int.Parse(dom["[data-stat=offsides]"].First().Text());
            awayDetails.Offsides = int.Parse(dom["[data-stat=offsides]"].Last().Text());

            homeDetails.Corners = int.Parse(dom["[data-stat=wonCorners]"].First().Text());
            awayDetails.Corners = int.Parse(dom["[data-stat=wonCorners]"].Last().Text());

            matchDetails.HomeTeam = homeDetails;
            matchDetails.AwayTeam = awayDetails;

            return(matchDetails);
        }
Ejemplo n.º 6
0
        public static DataObjects.MatchDetails GetMatchStatistics(string url)
        {
            var awayDetails  = new DataObjects.TeamDetails();
            var homeDetails  = new DataObjects.TeamDetails();
            var matchDetails = new DataObjects.MatchDetails();

            matchDetails.Date = DateTime.Today;

            var basicQuery     = "[data-bind=text: HorA.Event]";
            var attempsInitial = ".total-attempts--values-wrap ";

            var dom = CQ.CreateFromUrl(url.Replace("index.html", "statistics/index.html"));
            //ballPossession
            var homeTeamName     = dom[".team-home  .team-name"].Last().Text().Trim().Trim('\n').Trim('\r').Trim('\t').Trim().Trim();
            var homeGoals        = dom[basicQuery.Replace("HorA", "home").Replace("Event", "goalsScored")].Text();
            var homeoffsides     = dom[basicQuery.Replace("HorA", "home").Replace("Event", "offside")].Text();
            var homePossession   = dom[basicQuery.Replace("HorA", "home").Replace("Event", "ballPossession + '%'")].Text().Trim('%');
            var homeGoalsDetails = GetGoalsForTeamInMatch(dom, "home");

            Console.Write(homeTeamName + " ");

            var homeCorners   = dom[basicQuery.Replace("HorA", "home").Replace("Event", "corner")].Text();
            var homeOnTarget  = dom[attempsInitial + basicQuery.Replace("HorA", "home").Replace("Event", "attempsOn")].Text();
            var homeOffTarget = dom[attempsInitial + basicQuery.Replace("HorA", "home").Replace("Event", "attempsOff")].Text();

            homeDetails.Type         = (int)DataObjects.TeamType.Home;
            homeDetails.Name         = homeTeamName;
            homeDetails.Goals        = int.Parse(homeGoals);
            homeDetails.Offsides     = int.Parse(homeoffsides);
            homeDetails.Corners      = int.Parse(homeCorners);
            homeDetails.OnTarget     = int.Parse(homeOnTarget);
            homeDetails.OffTarget    = int.Parse(homeOffTarget);
            homeDetails.Possession   = int.Parse(homePossession);
            homeDetails.GoalsDetails = homeGoalsDetails;

            var awayTeamName =
                dom[".team-away  .team-name"].Last().Text().Trim().Trim('\n').Trim('\r').Trim('\t').Trim().Trim();
            var awayGoals        = dom[basicQuery.Replace("HorA", "away").Replace("Event", "goalsScored")].Text();
            var awayoffsides     = dom[basicQuery.Replace("HorA", "away").Replace("Event", "offside")].Text();
            var awayCorners      = dom[basicQuery.Replace("HorA", "away").Replace("Event", "corner")].Text();
            var awayOnTarget     = dom[attempsInitial + basicQuery.Replace("HorA", "away").Replace("Event", "attempsOn")].Text();
            var awayOffTarget    = dom[attempsInitial + basicQuery.Replace("HorA", "away").Replace("Event", "attempsOff")].Text();
            var awayPossession   = dom[basicQuery.Replace("HorA", "away").Replace("Event", "ballPossession + '%'")].Text().Trim('%');
            var awayGoalsDetails = GetGoalsForTeamInMatch(dom, "away");

            Console.Write(awayTeamName);
            Console.WriteLine();

            awayDetails.Type         = (int)DataObjects.TeamType.Away;
            awayDetails.Name         = awayTeamName;
            awayDetails.Goals        = int.Parse(awayGoals);
            awayDetails.Offsides     = int.Parse(awayoffsides);
            awayDetails.Corners      = int.Parse(awayCorners);
            awayDetails.OnTarget     = int.Parse(awayOnTarget);
            awayDetails.OffTarget    = int.Parse(awayOffTarget);
            awayDetails.OffTarget    = int.Parse(awayPossession);
            awayDetails.GoalsDetails = awayGoalsDetails;

            matchDetails.HomeTeam = homeDetails;
            matchDetails.AwayTeam = awayDetails;

            return(matchDetails);
        }