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); }
public CompetitorData(CompetitorData comp) { Id = comp.Id; Name = comp.Name; Link = comp.Link; CompetitionData = new CompetitionData(comp.CompetitionData); }
public CompetitionData(CompetitionData competitionData) { ID = competitionData.ID; Name = competitionData.Name; Country = competitionData.Country; Loaded = competitionData.Loaded; }
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"); } }
// 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); }