private CPlayerUpdate GetCoachUpdate(CompetitorData competitorData, string nationality, string coachFullName, DateTime?bornDate = null) { CPlayerUpdate coachUpdate = null; try { if (!string.IsNullOrWhiteSpace(coachFullName)) { coachUpdate = CreateUpdateAthleteObject(); coachUpdate.Name = coachFullName; if (bornDate.HasValue) { coachUpdate.DOB = bornDate.Value; } coachUpdate.Position = (int)ESoccerPlayerPositions.Management; coachUpdate.FormationPosition = (int)ESoccerPlayerFormationPositions.Coach; coachUpdate.Competitor = competitorData.Name; coachUpdate.Competition = competitorData.CompetitionData.Name; coachUpdate.Country = competitorData.CompetitionData.Country; } } catch (Exception ex) { coachUpdate = null; } return(coachUpdate); }
public override void Start() { CPlayerUpdate playerUpdateTest = new CPlayerUpdate(DATA_SOURCE); playerUpdateTest.Name = "Maor Melikson"; playerUpdateTest.Height = 1.75; playerUpdateTest.Country = "Israel"; playerUpdateTest.DOB = new DateTime(1984, 10, 30); playerUpdateTest.Position = (int)ESoccerPlayerPositions.Midfield; playerUpdateTest.FormationPosition = (int)ESoccerPlayerFormationPositions.AM; var playerStat = new CPlayerIndividualStat(); playerStat.StatisticType = (int)ESoccerPlayerStatistics.Goals; playerStat.Value = "1"; List <CPlayerIndividualStat> playerStats = new List <CPlayerIndividualStat>() { playerStat }; playerUpdateTest.Statistics.Add(new CAthleteStatisticsUpdate() { Stats = playerStats }); playerUpdateTest.Competitions = new List <string> { "Israeli Premier League", "Israeli FA Cup" }; playerUpdateTest.Competitors = new List <string> { "Hapoel Beer Sheva", "Israel" }; playerUpdateTest.JerseyNum = 24; playerUpdateTest.Nationalitys = new List <string> { "Poland", "Israel" }; playerUpdateTest.Weight = 70; RaiseEvent(new List <CPlayerUpdate>() { playerUpdateTest }); }
private async Task <Dictionary <string, CPlayerUpdate> > ScanSingleCompetitor(CompetitorData competitorData, ScanType scanType) { var list = new Dictionary <string, CPlayerUpdate>(); try { var requestTime = DateTime.UtcNow; var fetchResult = await _innerPageParser.GetCompetitorPlayerStatBlock(competitorData.Id); var responseTime = DateTime.UtcNow; var defaultRawData = fetchResult.HtmlDocument; if (defaultRawData == null) { return(null); } string chosenLeague = string.Empty; var seasonDic = ParseFunctions.ParseSeasonsSelect(defaultRawData.DocumentNode.SelectNodes("//select/optgroup/."), out chosenLeague); if (seasonDic == null) { return(null); } var rawData = defaultRawData; if (scanType == ScanType.DailyGames && seasonDic.ContainsKey(competitorData.NextScan.CompetitionData.Name)) { requestTime = DateTime.UtcNow; fetchResult = await _innerPageParser.GetCompetitorPlayerStatBlock(competitorData.Id, seasonDic[competitorData.NextScan.CompetitionData.Name].Key); responseTime = DateTime.UtcNow; rawData = fetchResult.HtmlDocument; if (rawData == null) { return(null); } } var table = rawData.DocumentNode.SelectSingleNode("//table[contains(@class,table)]"); if (table == null) { return(null); } var seasonId = table.GetAttributeValue("data-season_id", ""); var season = seasonDic.FirstOrDefault(x => x.Value.Key == seasonId); var coachesNodes = defaultRawData.DocumentNode.SelectNodes("//table[@class='table squad']//tbody//tr//td[@class='name large-link']/a"); if (coachesNodes != null) { foreach (var coachNode in coachesNodes) { string coachPageLink = GetCoachPageLink(coachNode); if (!string.IsNullOrWhiteSpace(coachPageLink)) { FetchResult coachFetchResult = await _innerPageParser.GetCochCardBlock(coachPageLink); HtmlDocument coachPageDoc = coachFetchResult.HtmlDocument; string nationality; string coachFullName; DateTime?bornDate; ParseCoachPersonalDetails(coachPageDoc, out nationality, out bornDate, out coachFullName); CPlayerUpdate coachUpdate = GetCoachUpdate(competitorData, nationality, coachFullName, bornDate); if (coachUpdate != null) { list.Add(coachPageLink, coachUpdate); } } } } var dataRows = rawData.DocumentNode.SelectNodes("//tbody/tr"); if (dataRows == null) { return(null); } var index = 1; foreach (var row in dataRows) { try { string link = null; var cAthleteUpdate = ParsePlayerCareerInSquadByCompetition(competitorData, season, row, scanType, out link, chosenLeague); if (cAthleteUpdate != null) { if (string.IsNullOrEmpty(link)) { link = index.ToString(); index++; } if (!list.ContainsKey(link)) { var currentCompetition = scanType == ScanType.DailyGames && competitorData.NextScan != null ? competitorData.NextScan.CompetitionData : competitorData.CompetitionData; cAthleteUpdate.WebRequestTime = requestTime; cAthleteUpdate.WebResponseTime = responseTime; cAthleteUpdate.UsedProxy = fetchResult.UsedProxy; list.Add(link, cAthleteUpdate); } } } catch (Exception ex) { } } } catch (Exception exception) { } return(list); }