private string ObtenerDatosResultados(RestClient client, PeticionTituloSuneduDto peticion, string captcha, string token) { var resultado = default(string); var request = new RestRequest($"consulta", Method.POST); request.AddHeader("Referer", peticion.UrlSunedu); request.AddHeader("Upgrade-Insecure-Requests", "1"); request.AddHeader("Cache-Control", "max-age=0"); request.AddHeader("Accept", "application/json, text/javascript, */*; q=0.01"); request.AddHeader("Accept-Encoding", "gzip, deflate, br"); request.AddHeader("Accept-Language", "en-US,en;q=0.9,es-419;q=0.8,es;q=0.7,zh;q=0.6"); request.AddParameter("doc", peticion.Dni); request.AddParameter("opcion", "PUB"); request.AddParameter("_token", token); request.AddParameter("icono", ""); request.AddParameter("captcha", captcha); var response = client.Execute(request); if (response.StatusCode == HttpStatusCode.OK) { resultado = response.Content; } return(resultado); }
private string ObtenerRutaFotoCaptcha(RestClient client, PeticionTituloSuneduDto peticion) { var ruta = $@"{peticion.RutaFolderTrabajo}{Guid.NewGuid()}.png"; Random r = new Random(); int rInt = r.Next(400, 997); if (System.IO.File.Exists(ruta)) { System.IO.File.Delete(ruta); } var request = new RestRequest($"simplecaptcha?date={rInt}"); byte[] response = client.DownloadData(request); if (response == null) { return(null); } System.IO.File.WriteAllBytes(ruta, response); return(ruta); }
private string ObtenerResultado(PeticionTituloSuneduDto peticion) { var client = new RestClient(peticion.UrlSunedu) { UserAgent = peticion.UserAgent }; var token = ObtenerToken(client); if (string.IsNullOrWhiteSpace(token)) { return(null); } var captcha = ObtenerCaptcha(client, peticion); if (string.IsNullOrWhiteSpace(captcha)) { return(null); } var resultados = ObtenerDatosResultados(client, peticion, captcha, token); return(resultados); }
public async Task <List <TituloSuneduDto> > ListarTitulos(PeticionTituloSuneduDto peticion) { peticion.RutaFolderTrabajo = _suneduConfiguracion.RutaFolderTrabajo; peticion.RutaTesseract = _suneduConfiguracion.RutaTesseract; peticion.UrlSunedu = _suneduConfiguracion.UrlSunedu; peticion.UserAgent = _suneduConfiguracion.UserAgent; var operacion = await _suneduServicio.ListarTitulos(peticion); return(ObtenerResultadoOGenerarErrorDeOperacion(operacion)); }
private string ObtenerCaptcha(RestClient client, PeticionTituloSuneduDto peticion) { var ruta = ObtenerRutaFotoCaptcha(client, peticion); if (string.IsNullOrWhiteSpace(ruta)) { return(null); } var captcha = ObtenerCodigo(ruta, peticion); return(captcha); }
private string ObtenerCodigo(string rutaImagen, PeticionTituloSuneduDto peticion) { var rutaFinal = $@"{peticion.RutaFolderTrabajo}{Path.GetFileNameWithoutExtension(rutaImagen)}"; var comando = $@"""{rutaImagen}"" ""{rutaFinal}"""; var procesoInformacion = new ProcessStartInfo(peticion.RutaTesseract) { Arguments = comando, UseShellExecute = false, CreateNoWindow = true //, //RedirectStandardOutput = true, //RedirectStandardError = true }; var cmd = Process.Start(procesoInformacion); cmd.WaitForExit(); var texto = System.IO.File.ReadAllText($@"{rutaFinal}.txt"); var textoLimpio = LimpiarTexto(texto); return(textoLimpio); }
public async Task <OperacionDto <List <TituloSuneduDto> > > ListarTitulos(PeticionTituloSuneduDto peticion) { var resultados = await ObtenerDeCache(peticion.Dni); bool fueDeCache = true; if (string.IsNullOrWhiteSpace(resultados)) { resultados = ObtenerResultado(peticion); fueDeCache = false; } if (string.IsNullOrWhiteSpace(resultados)) { return(new OperacionDto <List <TituloSuneduDto> >(CodigosOperacionDto.NoExiste, "No se encontró información")); } if (!string.IsNullOrWhiteSpace(resultados) && resultados.ToLower().Contains("captcha es incorrecto".ToLower())) { return(new OperacionDto <List <TituloSuneduDto> >(CodigosOperacionDto.CaptchaIncorrecto, "No se puede acceder a la info")); } var datoGuardar = new StringBuilder(resultados); resultados = resultados.Replace("\t", ""); resultados = resultados.Replace("<b>", ""); resultados = resultados.Replace(@"\u00d1", "Ñ"); resultados = resultados.Replace(@"\u00c1", "Á"); resultados = resultados.Replace(@"\u00c9", "É"); resultados = resultados.Replace(@"\u00cd", "Í"); resultados = resultados.Replace(@"\u00d3", "Ó"); resultados = resultados.Replace(@"\u00da", "Ú"); resultados = resultados.Substring(1, resultados.Length - 2).Replace("\\", ""); var infoScraper = JsonConvert.DeserializeObject <List <TituloScraperDto> >(resultados); if (infoScraper == null) { return(new OperacionDto <List <TituloSuneduDto> >(CodigosOperacionDto.NoExiste, "No se encontró información")); } if (!fueDeCache) { var entidad = await _suneduTituloDao.Obtener(peticion.Dni); if (entidad == null) { entidad = new SuneduTitulo() { Dni = peticion.Dni, Datos = datoGuardar.ToString() }; await _suneduTituloDao.Insertar(entidad); } else { entidad.Datos = datoGuardar.ToString(); entidad.Actualizado = DateTime.UtcNow; await _suneduTituloDao.Actualizar(entidad); } } return(new OperacionDto <List <TituloSuneduDto> >(infoScraper.Select(e => new TituloSuneduDto() { FechaDiploma = e.DiplFec, Institucion = e.Univ, NombreCompleto = e.Nombre, Titulo = e.TituloRev }).ToList())); }