Exemplo n.º 1
0
        public async Task <Dictionary <int, string> > GetNationalCountries()
        {
            var fetchResult = await _dataFetcher.FetchDom(URL_NATIONAL);

            var allCountries = new Dictionary <int, string>();

            var countryList = fetchResult.HtmlDocument.DocumentNode.SelectNodes("//li[contains(@class,'expandable')]/.");

            foreach (var country in countryList)
            {
                try
                {
                    var areaId = country.GetAttributeValue("data-area_id", "");
                    if (!string.IsNullOrWhiteSpace(areaId))
                    {
                        var countryId   = ParseFunctions.ParsePositiveNumber(areaId);
                        var countryName = HttpUtility.HtmlDecode(country.InnerText).Trim();
                        if (!allCountries.ContainsKey(countryId))
                        {
                            allCountries.Add(countryId, countryName);
                        }
                    }
                }
                catch (Exception exception)
                {
                }
            }

            return(allCountries);
        }
Exemplo n.º 2
0
        public CSoccerGameUpdate ParseBasicGameDetails(HtmlNode node, DateTime date)
        {
            var game = new CSoccerGameUpdate();

            game.HomeTeam.Name = ParseFunctions.ExtractValueFromNode(node, "//td[@class='team team-a ']/a/.", "title");
            game.AwayTeam.Name = ParseFunctions.ExtractValueFromNode(node, "//td[@class='team team-b ']/a/.", "title");

            var rawGameStartTime = ParseFunctions.ExtractValueFromNode(node, "//td[@class='score-time status']");
            var rawScore         = ParseFunctions.ExtractValueFromNode(node, "//td[@class='score-time score']");
            var rawStatusMinute  = ParseFunctions.ExtractValueFromNode(node, "//td[@class='minute visible']");

            if (!string.IsNullOrEmpty(rawScore))
            {
                var scores = ParseScore(rawScore);
                game.HomeTeam.Competitor.Scores[(int)ESoccerStages.CurrResult] = scores[0];
                game.AwayTeam.Competitor.Scores[(int)ESoccerStages.CurrResult] = scores[1];
            }

            if (!string.IsNullOrEmpty(rawGameStartTime))
            {
                var time = ParseFunctions.ParseTime(rawGameStartTime);
                game.StartTime = date.Date.Add(time).Subtract(DataFetcher.TimeOffset);
            }
            else
            {
                game.StartTime = date.Date.AddHours(16);
            }

            return(game);
        }
        public async Task <List <CompetitorData> > BuildCompetitorsListByCompetition(CompetitionData comptition)
        {
            var competitorList = new List <CompetitorData>();

            try
            {
                var param = string.Format(API_ExtraParam,
                                          HttpUtility.UrlEncode(string.Format(Competitions_CallbackParam, 2)),
                                          Competitions_Action,
                                          HttpUtility.UrlEncode(string.Format(Competitors_Param, comptition.ID)));

                var url = string.Format(ApiFormat, BASE_API_URL, Competitions_Block, param);

                var fetchResult = await _dataFetcher.FetchDom(url, true);

                var rawComptitor = fetchResult.HtmlDocument.DocumentNode.SelectNodes("//ul/li/.");
                if (rawComptitor != null)
                {
                    foreach (var rawComp in rawComptitor)
                    {
                        try
                        {
                            var rawLink = rawComp.SelectSingleNode(rawComp.XPath + "//a/.");

                            var link = rawLink.GetAttributeValue("href", "");
                            if (string.IsNullOrEmpty(link))
                            {
                            }
                            else
                            {
                                var comp = new CompetitorData
                                {
                                    Link            = link,
                                    Id              = ParseFunctions.ParsePositiveNumber(link, "/(?<num>\\d{2,})"),
                                    Name            = HttpUtility.HtmlDecode(rawLink.InnerText),
                                    CompetitionData = comptition
                                };

                                competitorList.Add(comp);
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                }
            }
            catch (Exception exception)
            {
            }

            return(competitorList);
        }
        private List <CompetitorData> ParseBasicGameDetails(HtmlNode node, DateTime date)
        {
            List <CompetitorData> game = null;

            try
            {
                var home = new CompetitorData();
                var away = new CompetitorData();

                home.Name = ParseFunctions.ExtractValueFromNode(node, "//td[@class='team team-a ']/a/.", "title");
                away.Name = ParseFunctions.ExtractValueFromNode(node, "//td[@class='team team-b ']/a/.", "title");

                home.Link = ParseFunctions.ExtractValueFromNode(node, "//td[@class='team team-a ']/a/.", "href");
                away.Link = ParseFunctions.ExtractValueFromNode(node, "//td[@class='team team-b ']/a/.", "href");

                home.Id = ParseFunctions.ParsePositiveNumber(home.Link, "/(?<num>\\d{2,})");
                away.Id = ParseFunctions.ParsePositiveNumber(away.Link, "/(?<num>\\d{2,})");

                var rawGameStartTime = ParseFunctions.ExtractValueFromNode(node, "//td[@class='score-time status']");
                var rawScore         = ParseFunctions.ExtractValueFromNode(node, "//td[@class='score-time score']");

                if (!string.IsNullOrEmpty(rawGameStartTime))
                {
                    var time        = ParseFunctions.ParseTime(rawGameStartTime);
                    var gameTime    = date.Date.Add(time).Subtract(DataFetcher.TimeOffset);
                    var scanContext = new ScanContext(gameTime);
                    home.NextScan = scanContext;
                    away.NextScan = scanContext;
                }
                else
                {
                    var gameTime    = date.Date.AddHours(16);
                    var scanContext = new ScanContext(gameTime);
                    home.NextScan = scanContext;
                    away.NextScan = scanContext;
                }

                game = new List <CompetitorData>()
                {
                    home, away
                };
            }
            catch (Exception exception)
            {
            }

            return(game);
        }
        public async Task <List <CompetitionData> > BuildCompetionListByCountry(int areaId, string countryName)
        {
            var competitionList = new List <CompetitionData>();

            try
            {
                var param = string.Format(API_ExtraParam,
                                          HttpUtility.UrlEncode(string.Format(Competitions_CallbackParam, 1)),
                                          Competitions_Action,
                                          HttpUtility.UrlEncode(string.Format(Competitions_Param, areaId)));

                var url = string.Format(ApiFormat, BASE_API_URL, Competitions_Block, param);

                var fetchResult = await _dataFetcher.FetchDom(url, true);

                var rawComptitions = fetchResult.HtmlDocument.DocumentNode.SelectNodes("//ul/li/.");
                if (rawComptitions != null)
                {
                    foreach (var rawComp in rawComptitions)
                    {
                        try
                        {
                            var comp = ParseFunctions.ParseCompetition(rawComp, countryName);
                            if (comp == null || comp.Name.ToLowerInvariant() == "other")
                            {
                                Console.WriteLine("Skipped competition of country {0}", countryName);
                                continue;
                            }

                            competitionList.Add(comp);
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                }
            }
            catch (Exception exception)
            {
            }

            return(competitionList);
        }
        public async Task <List <CPlayerIndividualStat> > BuildPlayerCareerByCompetition(string playerId, string competitionParams)
        {
            var param = string.Format(API_ExtraParam,
                                      HttpUtility.UrlEncode(string.Format(PlayerCareerStats_CallbackParam, playerId)),
                                      PlayerCareerStats_Action,
                                      HttpUtility.UrlEncode(competitionParams));

            var url = string.Format(ApiFormat, BASE_API_URL, PlayerCareerStats_Block, param);

            var fetchResult = await _dataFetcher.FetchDom(url, true);

            var rawTotalRow = fetchResult.HtmlDocument.DocumentNode.SelectSingleNode("//tfoot/tr/.");

            if (rawTotalRow == null)
            {
                return(null);
            }

            var totalRow = rawTotalRow.ChildNodes.Where(rp => rp.Name == "td").ToArray();

            var careerRecord = ParseFunctions.ParseCareerRecord(totalRow);

            return(careerRecord);
        }