public async Task CarregaJogosDeAmanha(bool descending = false, bool headless = false, bool ignorarHorario = false)
        {
            while (ResultadosSiteHelper.CarregandoJogos)
            {
                await Task.Delay(400000);
            }

            var idContainer = _idContainerRepository.TrazerIdContainerAmanha();

            if (idContainer != null && !ignorarHorario)
            {
                return;
            }

            bool depoisDasSete = DateTime.Now >= new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 19, 00, 00);

            if (depoisDasSete || ignorarHorario)
            {
                var data = DateTime.Now.Date.AddDays(1).Date;
                _telegramService.EnviaMensagemParaOGrupo($"Carregando Jogos de Amanhã {data}");

                var container = _idContainerRepository.TrazerIdContainerAmanha();
                if (container == null || !container.Ids.Any())
                {
                    IWebDriver           wd3 = SeleniumHelper.CreateDefaultWebDriver(headless);
                    ResultadoSiteService rs3 = new ResultadoSiteService(wd3);
                    container = await rs3.SalvaJogosIds(true);

                    wd3.Dispose();
                    GC.Collect();
                }

                IWebDriver           wd1 = SeleniumHelper.CreateDefaultWebDriver(headless);
                ResultadoSiteService rs1 = new ResultadoSiteService(wd1);
                IWebDriver           wd2 = SeleniumHelper.CreateDefaultWebDriver(headless);
                ResultadoSiteService rs2 = new ResultadoSiteService(wd2);

                await Task.Delay(5000);

                Console.WriteLine($"Salvando Jogos De Amanhã as {DateTime.Now}");
                Task.Factory.StartNew(async() =>
                {
                    await rs2.SalvaJogosDeAmanha(container, false, wd2);
                });

                await rs1.SalvaJogosDeAmanha(container, true, wd1);

                ResultadosSiteHelper.CarregandoJogos = false;

                wd1.Dispose();
                wd2.Dispose();

                var jogos          = _jogoRepository.TrazJogosPorIds(container.Ids.Select(ji => ji.Id).ToArray());
                var jogosFSOuDobro = jogos.Where(j => j.UmTimeFazMaisGolEOutroSofreMaisGolTotal).Distinct().ToList();
                var primeiroJogo   = jogosFSOuDobro.OrderBy(p => p.DataInicio.TimeOfDay).FirstOrDefault();
                _telegramService.EnviaMensagemParaOGrupo($"{jogosFSOuDobro.Count} jogo(s) sera(ão) analisado(s) dia {data} com Inicio as {primeiroJogo.DataInicio.TimeOfDay}");

                await TentaCarregarJogosComErroHoje();
            }
        }
        public async Task TentaCarregarJogosComErroHoje(bool descending = false, bool headless = false)
        {
            while (ResultadosSiteHelper.CarregandoJogos)
            {
                await Task.Delay(400000);
            }

            var idContainer = _idContainerRepository.TrazerIdContainerHoje() ?? _idContainerRepository.TrazerIdContainerAmanha();

            if (idContainer == null)
            {
                return;
            }

            IWebDriver wd1 = SeleniumHelper.CreateDefaultWebDriver(headless);
            IWebDriver wd2 = SeleniumHelper.CreateDefaultWebDriver(headless);

            ResultadoSiteService rs1 = new ResultadoSiteService(wd1);
            ResultadoSiteService rs2 = new ResultadoSiteService(wd2);

            Console.WriteLine($"Tentando carregar novamente Jogos De Hoje as {DateTime.Now}");
            Task.Factory.StartNew(async() =>
            {
                try
                {
                    foreach (var i in idContainer.IdsComErro.OrderBy(i => i.DataInicio).Select(i => i.Id).Distinct())
                    {
                        await rs1.CriarOuAtualizaInfosJogo(i, false, false);
                    }
                }
                catch
                {
                    foreach (var i in idContainer.IdsComErro.OrderBy(i => i.DataInicio).Select(i => i.Id).Distinct())
                    {
                        await rs1.CriarOuAtualizaInfosJogo(i, false, false);
                    }
                }
            });

            try
            {
                foreach (var i in idContainer.IdsComErro.OrderByDescending(i => i.DataInicio).Select(i => i.Id).Distinct())
                {
                    await rs2.CriarOuAtualizaInfosJogo(i, false, false);
                }
            }
            catch
            {
                foreach (var i in idContainer.IdsComErro.OrderByDescending(i => i.DataInicio).Select(i => i.Id).Distinct())
                {
                    await rs2.CriarOuAtualizaInfosJogo(i, false, false);
                }
            }

            ResultadosSiteHelper.CarregandoJogos = false;
            wd1.Dispose();
            wd2.Dispose();
        }
        public async Task CarregaJogosDeHojeH2H(bool descending = false, bool headless = false, bool ignorarHorario = false)
        {
            while (ResultadosSiteHelper.CarregandoJogos)
            {
                await Task.Delay(400000);
            }

            var idContainer = _idContainerRepository.TrazerIdContainerHoje();

            if (idContainer != null && !ignorarHorario)
            {
                return;
            }

            bool depoisDasSete = DateTime.Now >= new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 19, 00, 00);

            if (depoisDasSete || ignorarHorario)
            {
                var data = DateTime.Now.Date.AddDays(1).Date;
                _telegramService.EnviaMensagemParaOGrupo($"Carregando Jogos de Hoje {data}");

                var container = _idContainerRepository.TrazerIdContainerHoje();
                if (container == null || !container.Ids.Any())
                {
                    IWebDriver           wd3 = SeleniumHelper.CreateDefaultWebDriver(headless);
                    ResultadoSiteService rs3 = new ResultadoSiteService(wd3);
                    container = await rs3.SalvaJogosIds(true);

                    wd3.Dispose();
                    GC.Collect();
                }

                IWebDriver           wd1 = SeleniumHelper.CreateDefaultWebDriver(headless);
                ResultadoSiteService rs1 = new ResultadoSiteService(wd1);
                IWebDriver           wd2 = SeleniumHelper.CreateDefaultWebDriver(headless);
                ResultadoSiteService rs2 = new ResultadoSiteService(wd2);

                await Task.Delay(5000);

                Console.WriteLine($"Salvando Jogos De Hoje as {DateTime.Now}");
                Task.Factory.StartNew(async() =>
                {
                    await rs2.SalvaJogosDeHojeH2H(container, false, wd2);
                });

                await rs1.SalvaJogosDeHojeH2H(container, true, wd1);

                AnalisaJogosH2H(container);

                ResultadosSiteHelper.CarregandoJogos = false;

                wd1.Dispose();
                wd2.Dispose();
            }
        }
        public async Task SalvaJogosDeAmanhaH2H(IdContainer container, bool descending = false, IWebDriver driver = null, TimeSpan?acimaDe = null)
        {
            if (driver != null)
            {
                _driver = driver;
            }
            Console.WriteLine($"Salvando Jogos De Amanhã as {DateTime.Now}");

            ResultadosSiteHelper.CarregandoJogos = true;

            var ids = descending ? container.Ids.OrderByDescending(id => id.DataInicio.TimeOfDay).ToList() :
                      container.Ids.OrderBy(id => id.DataInicio.TimeOfDay).ToList();

            if (acimaDe != null)
            {
                ids = ids.Where(i => i.DataInicio.TimeOfDay >= acimaDe.Value).ToList();
            }

            try
            {
                Task.Factory.StartNew(async() =>
                {
                    IWebDriver wd2           = SeleniumHelper.CreateDefaultWebDriver(true);
                    ResultadoSiteService rs2 = new ResultadoSiteService(wd2);

                    for (int i = 0; i < ids.Count; i++)
                    {
                        if (i % 2 == 0)
                        {
                            await rs2.CriarOuAtualizaInfosJogoH2H(ids[i].Id, container.Id, true);
                        }
                    }

                    wd2.Dispose();
                });

                for (int i = 0; i < ids.Count; i++)
                {
                    if (i % 2 != 0)
                    {
                        await CriarOuAtualizaInfosJogoH2H(ids[i].Id, container.Id, true);
                    }
                }
            }
            catch (Exception e)
            {
                _telegramService.EnviaMensagemParaOGrupo($"Erro: {e.Message}");
            }

            ResultadosSiteHelper.CarregandoJogos = false;
        }
        public async Task CarregaJogosDeHoje(bool descending = false, bool headless = false)
        {
            while (ResultadosSiteHelper.CarregandoJogos)
            {
                await Task.Delay(400000);
            }

            _telegramService.EnviaMensagemParaOGrupo($"Carregando Jogos de Hoje {DateTime.Now.Date}");

            var container = _idContainerRepository.TrazerIdContainerHoje();

            if (container == null || !container.Ids.Any())
            {
                IWebDriver           wd3 = SeleniumHelper.CreateDefaultWebDriver(headless);
                ResultadoSiteService rs3 = new ResultadoSiteService(wd3);
                container = await rs3.SalvaJogosIds();

                wd3.Dispose();
                GC.Collect();
            }

            IWebDriver           wd1 = SeleniumHelper.CreateDefaultWebDriver(headless);
            ResultadoSiteService rs1 = new ResultadoSiteService(wd1);
            IWebDriver           wd2 = SeleniumHelper.CreateDefaultWebDriver(headless);
            ResultadoSiteService rs2 = new ResultadoSiteService(wd2);

            Task.Factory.StartNew(async() =>
            {
                await rs2.SalvaJogosDeHoje(container, false, wd2);
            });

            await rs1.SalvaJogosDeHoje(container, true, wd1);

            ResultadosSiteHelper.CarregandoJogos = false;

            wd1.Dispose();
            wd2.Dispose();

            var jogos          = _jogoRepository.TrazJogosPorIds(container.Ids.Select(ji => ji.Id).ToArray());
            var jogosFSOuDobro = jogos.Where(j => j.UmTimeFazMaisGolEOutroSofreMaisGolTotal).Distinct().ToList();
            var primeiroJogo   = jogosFSOuDobro.OrderBy(p => p.DataInicio.TimeOfDay).FirstOrDefault();

            _telegramService.EnviaMensagemParaOGrupo($"{jogosFSOuDobro.Count} jogo(s) sera(ão) analisado(s) dia {DateTime.Now.Date} com Inicio as {primeiroJogo.DataInicio.TimeOfDay}");
            // await TentaCarregarJogosComErroHoje();
        }
        public async Task StartAnaliseLive(bool descending = false)
        {
            while (true)
            {
                GC.Collect();;
                await CarregaJogosDeAmanha(descending, true);

                var jogos = ListaDeJogos().Where(i => TempoDiferencaJogo(i) > 1 && TempoDiferencaJogo(i) < 80).ToList();
                if (!jogos.Any())
                {
                    Console.WriteLine($"Nenhum Jogo Para Analisar no Momento as {DateTime.Now} Aguardando 3 Minutos...");
                    await Task.Delay(TimeSpan.FromMinutes(3));
                }
                ;

                if (jogos.Any())
                {
                    if (jogos.Count > 5)
                    {
                        if (this._driver != null)
                        {
                            this._driver.Dispose();
                            this._driver = SeleniumHelper.CreateDefaultWebDriver(true);
                        }
                    }

                    if (this._driver == null)
                    {
                        this._driver = SeleniumHelper.CreateDefaultWebDriver(true);
                    }
                    _jogoService = new JogoService(_driver);
                    foreach (var i in jogos)
                    {
                        var minutagem = TempoDiferencaJogo(i);

                        try
                        {
                            Console.WriteLine($"Analisando ID: {i.IdJogoBet} as {DateTime.Now}");
                            await CriarOuAtualizaInfosJogo(i.IdJogoBet);

                            var jogo = _jogoRepository.TrazerJogoPorIdBet(i.IdJogoBet);
                            if (jogo != null)
                            {
                                jogo.Minutos = minutagem.ToString();
                                bool jogoProntoParaAnalise = _jogoRepository.JogoProntoParaAnalise(i.IdJogoBet);
                                if (jogoProntoParaAnalise)
                                {
                                    jogo.Observacoes = jogos.FirstOrDefault(j => j.IdJogoBet == jogo.IdJogoBet).Observacoes;
                                    _analiseService.AnalisaJogoLive(jogo);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            var msg = e.Message;
                            Console.WriteLine("Erro: " + e.Message + " IdBet: " + i.IdJogoBet);
                            _driver.Dispose();
                        }
                    }
                }
            }
        }
Esempio n. 7
0
        public async Task PegaInformacoesH2H(Jogo jogo)
        {
            if (_driver == null)
            {
                _driver = SeleniumHelper.CreateDefaultWebDriver();
            }

            _driver.Navigate().GoToUrl($"https://www.resultados.com/jogo/{jogo.IdJogoBet}#h2h;overall");
            await Task.Delay(2000);

            var showMores = _driver.FindElements(By.ClassName("show_more"));

            showMores[0].Click();
            showMores[1].Click();

            //var tabelas = _driver.FindElements(By.ClassName("h2h-wrapper"));
            var trsTime1 = _driver.FindElement(By.ClassName("h2h_home"))
                           .FindElement(By.TagName("tbody"))
                           .FindElements(By.TagName("tr"));
            var trsTime2 = _driver.FindElement(By.ClassName("h2h_away"))
                           .FindElement(By.TagName("tbody"))
                           .FindElements(By.TagName("tr"));

            List <H2HInfo> h2hInfoListTime1 = new List <H2HInfo>();
            List <H2HInfo> h2hInfoListTime2 = new List <H2HInfo>();

            if (trsTime1.Count < 10 || trsTime2.Count < 10)
            {
                return;
            }

            foreach (var tr in trsTime1.Take(10))
            {
                h2hInfoListTime1.Add(CriarH2HInfo(tr));
            }

            foreach (var tr in trsTime2.Take(10))
            {
                h2hInfoListTime2.Add(CriarH2HInfo(tr));
            }

            jogo.Time1.H2HInfos             = h2hInfoListTime1;
            jogo.Time2.H2HInfos             = h2hInfoListTime2;
            jogo.Time1.GolsRealizadosH2H    = jogo.Time1.H2HInfos.Sum(j => j.GolsTime1);
            jogo.Time2.GolsRealizadosH2H    = jogo.Time2.H2HInfos.Sum(j => j.GolsTime1);
            jogo.Time1.GolsSofridosH2H      = jogo.Time1.H2HInfos.Sum(j => j.GolsTime2);
            jogo.Time2.GolsSofridosH2H      = jogo.Time2.H2HInfos.Sum(j => j.GolsTime2);
            jogo.Time1.PercOverUltimosJogos = (new decimal(jogo.Time1.H2HInfos.Count(j => j.TotalGols > 2)) / new decimal(jogo.Time1.H2HInfos.Count)) * new decimal(100);
            jogo.Time2.PercOverUltimosJogos = (new decimal(jogo.Time2.H2HInfos.Count(j => j.TotalGols > 2)) / new decimal(jogo.Time2.H2HInfos.Count)) * new decimal(100);

            jogo.Time1.QtdJogosH2H05 = jogo.Time1.H2HInfos.Count(j => j.TotalGols == 1);
            jogo.Time1.QtdJogosH2H15 = jogo.Time1.H2HInfos.Count(j => j.TotalGols == 2);
            jogo.Time1.QtdJogosH2H25 = jogo.Time1.H2HInfos.Count(j => j.TotalGols >= 3);

            jogo.Time2.QtdJogosH2H05 = jogo.Time2.H2HInfos.Count(j => j.TotalGols == 1);
            jogo.Time2.QtdJogosH2H15 = jogo.Time2.H2HInfos.Count(j => j.TotalGols == 2);
            jogo.Time2.QtdJogosH2H25 = jogo.Time2.H2HInfos.Count(j => j.TotalGols >= 3);

            jogo.Time1.QtdJogosUnderH2H25 = jogo.Time1.H2HInfos.Count(j => j.TotalGols <= 2);
            jogo.Time1.QtdJogosUnderH2H35 = jogo.Time1.H2HInfos.Count(j => j.TotalGols <= 3);
            jogo.Time1.QtdJogosUnderH2H45 = jogo.Time1.H2HInfos.Count(j => j.TotalGols <= 4);
            jogo.Time1.QtdJogosH2HOver15  = jogo.Time1.H2HInfos.Count(j => j.TotalGols >= 2);
            jogo.Time1.QtdJogosH2HOver25  = jogo.Time1.H2HInfos.Count(j => j.TotalGols >= 3);

            jogo.Time2.QtdJogosUnderH2H25 = jogo.Time2.H2HInfos.Count(j => j.TotalGols <= 2);
            jogo.Time2.QtdJogosUnderH2H35 = jogo.Time2.H2HInfos.Count(j => j.TotalGols <= 3);
            jogo.Time2.QtdJogosUnderH2H45 = jogo.Time1.H2HInfos.Count(j => j.TotalGols <= 4);
            jogo.Time2.QtdJogosH2HOver15  = jogo.Time2.H2HInfos.Count(j => j.TotalGols >= 2);
            jogo.Time2.QtdJogosH2HOver25  = jogo.Time2.H2HInfos.Count(j => j.TotalGols >= 3);
        }