Esempio n. 1
0
        public static CompetitionData ParseCompetitor(HtmlNode node, string countryName)
        {
            try
            {
                var rawTitle = node.SelectSingleNode(node.XPath + "//a/.");
                if (rawTitle != null)
                {
                    var rawId = node.GetAttributeValue("data-competition_id", "");
                    var comp  = new CompetitionData
                    {
                        Name    = HttpUtility.HtmlDecode(rawTitle.InnerText),
                        ID      = ParsePositiveNumber(rawId),
                        Country = countryName
                    };

                    return(comp);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }

            return(null);
        }
Esempio n. 2
0
 public CompetitorData(CompetitorData comp)
 {
     Id              = comp.Id;
     Name            = comp.Name;
     Link            = comp.Link;
     CompetitionData = new CompetitionData(comp.CompetitionData);
 }
Esempio n. 3
0
 public CompetitionData(CompetitionData competitionData)
 {
     ID      = competitionData.ID;
     Name    = competitionData.Name;
     Country = competitionData.Country;
     Loaded  = competitionData.Loaded;
 }
Esempio n. 4
0
        public CompetitionData ParseCompetition(HtmlNode node)
        {
            var rawTitle      = node.SelectSingleNode(node.XPath + "//h3/.");
            var escapedValues = HttpUtility.HtmlDecode(rawTitle.InnerText);
            var values        = escapedValues.Split('-');
            var comp          = new CompetitionData();

            if (values.Length >= 2)
            {
                comp.Country = values[0].Trim();
                comp.Name    = values[1].Trim();
                if (values.Length > 2)
                {
                    comp.Name += values[2].Trim();
                }
            }

            var isClickable = node.GetAttributeValue("class", "");

            if (isClickable.Contains("loaded"))
            {
                comp.Loaded = true;
            }

            comp.ID = ParseCompetionId(node);

            return(comp);
        }
        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);
        }
        public void Execute(CompetitionData data)
        {
            try
            {
                _unitOfWork.CompetitionRepository.Insert(data.Competition);

                foreach (TeamAux team in data.Teams)
                {
                    if (_unitOfWork.TeamRepository.GetByID(team.Id) == null)
                    {
                        _unitOfWork.TeamRepository.Insert(team);
                    }
                    GenerateTeamCompetition(data.Competition.id, team.Id);
                }

                _unitOfWork.Commit();
            }
            catch (Exception e)
            {
                throw new Exception("Server error");
            }
        }
Esempio n. 7
0
        // Builds game list with basic data for a game
        public async Task <IDictionary <string, CSoccerGameUpdate> > BuildGameListByCompetiionId(CompetitionData comp, DateTime date)
        {
            var strURL = string.Format(DateTime.UtcNow.Date > date.Date ? URL_PAST_MATCHES : URL_MATCHES_BY_DATE, date.ToString(MatchesDateFormat), comp.ID);

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

            IDictionary <string, CSoccerGameUpdate> gamesDictionary = null;

            gamesDictionary = fetchResult.HtmlDocument != null?ParseGameList(fetchResult.HtmlDocument, date) : new Dictionary <string, CSoccerGameUpdate>();

            foreach (CSoccerGameUpdate game in gamesDictionary.Values)
            {
                game.Country.Value     = comp.Country;
                game.Competition.Value = string.Format("{0} {1}", comp.Name, game.Competition.Value).Trim();
            }

            return(gamesDictionary);
        }
        public async Task <List <CompetitorData> > BuildGamingListByDateForCompetition(CompetitionData comp, DateTime date)
        {
            List <CompetitorData> competitors = null;

            try
            {
                var param = string.Format(API_ExtraParam,
                                          HttpUtility.UrlEncode(string.Format(DateTime.UtcNow.Date > date.Date ? MatchesByDate_Past_CallbackParam : MatchesByDate_CallbackParam, date.ToString(MatchesDateFormat))),
                                          MatchesByDate_Action,
                                          HttpUtility.UrlEncode(string.Format(MatchesByDate_Param, comp.ID)));

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

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

                competitors = fetchResult != null?ParseGameList(fetchResult.HtmlDocument, date) : new List <CompetitorData>();

                foreach (var competitor in competitors)
                {
                    competitor.CompetitionData          = new CompetitionData(comp);
                    competitor.NextScan.CompetitionData = comp;
                }
            }
            catch (Exception exception)
            {
            }

            return(competitors);
        }