//Para cada node(produto) que se encaixa no que se procura adiciona-se numa lista. private Boolean VerificarCompatibilidade(string nomeResultado, Quadrinho hq) { var patternNome = removerAcentos(hq.nome.ToLower()); var patternVolume = hq.volume; var input = removerAcentos(nomeResultado.ToLower()); Match matchNome = Regex.Match(input, patternNome); Match matchVolume = Regex.Match(input, patternVolume); if (hq.volume.Length > 0) { if (matchNome.Success && matchVolume.Success) { return(true); } else { return(false); } } else { if (matchNome.Success) { return(true); } else { return(false); } } }
public async Task <IActionResult> Edit(int id, [Bind("IdQuadrinho,Titulo,Descricao,Preco,Quantidade,CaminhoCapa")] Quadrinho quadrinho) { if (id != quadrinho.IdQuadrinho) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(quadrinho); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuadrinhoExists(quadrinho.IdQuadrinho)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(quadrinho)); }
public List <Quadrinho> ObterQuadrinhos(IConfiguration configuracao, int idPersonagem) { var total = ObterTotalQuadrinhos(configuracao, idPersonagem); var max = (int)Enums.Enums.LimiteQuadrinho.Maximo; var lsQuadrinhos = new List <Quadrinho>(); while (total > lsQuadrinhos.Count) { HttpResponseMessage resposta = cliente.GetAsync( configuracao.GetSection("MarvelComicsAPI:RequestURL").Value + $"characters/{idPersonagem}/comics?ts={ts}&apikey={chavePublica}&hash={hash}&limit={max}&offset={lsQuadrinhos.Count}").Result; resposta.EnsureSuccessStatusCode(); string conteudo = resposta.Content.ReadAsStringAsync().Result; dynamic resultado = JsonConvert.DeserializeObject(conteudo); for (var x = 0; x < (int)resultado.data.count; x++) { Quadrinho quadrinho = new Quadrinho { Id = resultado.data.results[x].id, Titulo = resultado.data.results[x].title }; lsQuadrinhos.Add(quadrinho); } } return(lsQuadrinhos); }
public async Task <IActionResult> Create([Bind("Id,Titulo,Descricao,Preco,Quantidade,CaminhoCapa")] Quadrinho quadrinho) { if (ModelState.IsValid) { //salvar img no diretorio img string wwwRootPath = _hostEnvironment.WebRootPath; string fileName = Path.GetFileNameWithoutExtension(quadrinho.CaminhoCapa.FileName); string extension = Path.GetExtension(quadrinho.CaminhoCapa.FileName); string path = Path.Combine(wwwRootPath + "\\img", fileName + extension); using (var fileStream = new FileStream(path, FileMode.Create)) { await quadrinho.CaminhoCapa.CopyToAsync(fileStream); } quadrinho.CaminhoFisicoCapa = "\\img\\" + fileName + extension; Convert.ToDecimal(quadrinho.Preco).ToString("N2"); _context.Add(quadrinho); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(quadrinho)); }
public List <HtmlNode> FiltraResultados(ChromeDriver driver, Quadrinho hq, List <Resultado> resultados, string xpathResultados, string xpathResultadoTitulo, string xpathNenhumResultadoEncontrado) { //Tranforma o html do resultado em um formato mais facil de ser manipulado. var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(driver.PageSource); //Lista dos nodes (produtos) que se deseja. List <HtmlNode> listaResultadosDesejados = new List <HtmlNode>(); //Encontra no html todos os nodes de cada resultado encontrado. var nodesResultados = doc.DocumentNode.SelectNodes(xpathResultados); if (verificaResultadosEncontrados(doc, xpathNenhumResultadoEncontrado)) { //Para cada um realiza a extração do titulo do produto. foreach (var node in nodesResultados) { var nodeNome = node.SelectSingleNode(xpathResultadoTitulo); var nomeResultado = nodeNome.InnerText; //Há a verificação se o produto em questão é o que se procura. var verificaResultado = VerificarCompatibilidade(nomeResultado, hq); if (verificaResultado) { listaResultadosDesejados.Add(node); } } } return(listaResultadosDesejados); }
static void PolimorfismoComInterface() { Selo selo = new Selo(); Quadrinho quadrinho = new Quadrinho(); ImprimirColecao(selo); ImprimirColecao(quadrinho); }
public List <Resultado> Extrai(ChromeDriver driver, Quadrinho hq, List <Resultado> resultados, string url) { var list = FiltraResultados(driver, hq, resultados, getXpathResultados(), getXpathResultadoTitulo(), getXpathNenhumResultadoEncontrado()); var listResultados = ExtrairResultados(list, driver, resultados, getXpathNodeLink(), getXpathNodePreco(), url, getXpathEditora(), hq, getXpathDisponibilidade()); return(listResultados); }
public ChromeDriver RealizaPesquisa(ChromeDriver driver, Quadrinho hq, string xpathPesquisa, string xpathBotao) { var stringPesquisa = MontaStringPesquisa(hq); //No html do site procura pela barra de pesquisa e insere os parametros desejados. driver.FindElementById(xpathPesquisa).SendKeys(stringPesquisa); //Encontra e clique no botão pesquisar. IWebElement botao = driver.FindElementByXPath(xpathBotao); botao.Click(); return(driver); }
public override string MontaStringPesquisa(Quadrinho hq) { //Monta a estring de pesquisa que depende do volume ou não. if (hq.volume.Length > 0) { var int1 = Int32.Parse(hq.volume); var str = int1.ToString("000"); return(String.Format(hq.nome + " N ° " + str)); } else { return(String.Format(hq.nome)); } }
public List <Resultado> NavegaPesquisa(Quadrinho hq, List <Resultado> resultados) { var driver = InicializaDriver(); driver = NavegaPaginaInicial(driver, getUrl()); driver = RealizaPesquisa(driver, hq, getXpathPesquisa(), getXpathBotao()); Thread.Sleep(2000); //Ao chegar no Html dos resultados, começa a extração dos dados. ExtracaoBancaGibi extracao = new ExtracaoBancaGibi(); var resultado = extracao.Extrai(driver, hq, resultados, getUrl()); driver.Close(); return(resultado); }
public Quadrinho ObterQuadrinho(IConfiguration configuracao, int id) { HttpResponseMessage reposta = cliente.GetAsync( configuracao.GetSection("MarvelComicsAPI:RequestURL").Value + $"comics/{id}?ts={ts}&apikey={chavePublica}&hash={hash}").Result; reposta.EnsureSuccessStatusCode(); string conteudo = reposta.Content.ReadAsStringAsync().Result; dynamic resultado = JsonConvert.DeserializeObject(conteudo); Quadrinho quadrinho = new Quadrinho { Id = resultado.data.results[0].id, Titulo = resultado.data.results[0].title, Descricao = resultado.data.results[0].description, ImagemUrl = resultado.data.results[0].thumbnail.path + "/portrait_xlarge." + resultado.data.results[0].thumbnail.extension }; return(quadrinho); }
public async Task <IActionResult> Create([Bind("IdQuadrinho,Titulo,Preco,Quantidade,IdSituacao")] Quadrinho quadrinho) { Compra compra = new Compra(); if (quadrinho != null) { compra.Titulo = quadrinho.Titulo; compra.Preco = quadrinho.Preco; compra.Quantidade = quadrinho.Quantidade; compra.Usuario = User.Identity.Name; _context.Add(compra); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Compras")); } return(View(Index(quadrinho.IdQuadrinho))); }
public ActionResult Post(string text_nome, string text_volume, string text_editora) { Quadrinho hq = new Quadrinho(); hq.nome = text_nome; hq.volume = text_volume; hq.editora = text_editora; List <Resultado> resultados = new List <Resultado>(); //Navega e extrai as informações e retorna uma lista de quadrinhos desejados. List <Resultado> resultadoComix = new List <Resultado>(); navegaComix(hq, resultadoComix); resultados.AddRange(resultadoComix); //Navega e extrai as informações e retorna uma lista de quadrinhos desejados. List <Resultado> resultadoExcelsior = new List <Resultado>(); navegaExcelsior(hq, resultadoExcelsior); resultados.AddRange(resultadoExcelsior); //Navega e extrai as informações e retorna uma lista de quadrinhos desejados. List <Resultado> resultadoBancaGibi = new List <Resultado>(); navegaBancaGibi(hq, resultadoBancaGibi); resultados.AddRange(resultadoBancaGibi); //Navega e extrai as informações e retorna uma lista de quadrinhos desejados. List <Resultado> resultadoPanini = new List <Resultado>(); navegaPanini(hq, resultadoPanini); resultados.AddRange(resultadoPanini); ViewBag.Resultados = resultados; return(View("resultados")); }
public virtual bool filtraEditora(HtmlDocument doc, Resultado resultado, string xpathNodeEditora, Quadrinho hq) { var editoraNode = doc.DocumentNode.SelectSingleNode(xpathNodeEditora); var editora = editoraNode.InnerText; var patternNome = hq.editora.ToLower(); var input = editora.ToLower(); Match match = Regex.Match(input, patternNome); if (match.Success) { return(true); } else { return(false); } }
public virtual string MontaStringPesquisa(Quadrinho hq) { return(String.Format(hq.nome + " " + hq.volume)); }
private void navegaPanini(Quadrinho hq, List <Resultado> dadosPanini) { NavegaPanini excelsior = new NavegaPanini(); dadosPanini = excelsior.NavegaPesquisa(hq, dadosPanini); }
//Após filtrar os resultados da busca, surge uma lista com os produtos que batem com os parametros dados. //Ocorre a extração de cada dado dos produtos. public List <Resultado> ExtrairResultados(List <HtmlNode> listaResultadosDesejados, ChromeDriver driver, List <Resultado> resultados, string xpathNodeLink, string xpathNodePreco, string url, string xpathNodeEditora, Quadrinho hq, string xpathNodeDisponibilidade) { Navega navegaResultado = new Navega(); foreach (var node in listaResultadosDesejados) { Resultado resultado = new Resultado(); var nodeLink = node.SelectSingleNode(xpathNodeLink); var link = nodeLink.Attributes.First().Value; var linkResultado = montaLinkResultado(url, link); navegaResultado.NavegaResultado(linkResultado, driver, resultado); var doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(driver.PageSource); if (filtraEditora(doc, resultado, xpathNodeEditora, hq)) { if (verificarDisponibilidade(xpathNodeDisponibilidade, doc)) { var nodePreço = doc.DocumentNode.SelectSingleNode(xpathNodePreco); resultado.preco = nodePreço.InnerText; resultados.Add(resultado); } } } return(resultados); }
private static void navegaComix(Quadrinho hq, List <Resultado> dadosComix) { NavegaComix comix = new NavegaComix(); dadosComix = comix.NavegaPesquisa(hq, dadosComix); }
private static void navegaExcelsior(Quadrinho hq, List <Resultado> dadosExcelsior) { NavegaExcelsior excelsior = new NavegaExcelsior(); dadosExcelsior = excelsior.NavegaPesquisa(hq, dadosExcelsior); }
private void navegaBancaGibi(Quadrinho hq, List <Resultado> dadosBancaGibi) { NavegaBancaGibi excelsior = new NavegaBancaGibi(); dadosBancaGibi = excelsior.NavegaPesquisa(hq, dadosBancaGibi); }