Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
            });
        }
Exemplo n.º 3
0
        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);
        }