public string PostQuestion(string username, string Email, string Password, string Topic, string Proxy, string Macro) { // GET iMacros code // SET Variables // Execute the code // Return Success / Failure //bool Success = false; string QuestionLink = ""; iMacros.App m_app = new iMacros.App(); iMacros.Status s = new iMacros.Status(); s = m_app.iimOpen("", true, 5); s = m_app.iimSet("Email", Email); s = m_app.iimSet("Password", Password); s = m_app.iimSet("Proxy", Proxy); s = m_app.iimSet("Topic", Topic); // Execute macro s = m_app.iimPlayCode(Macro, m_timeout); try { QuestionLink = m_app.iimGetExtract(1); } catch { goto Continue1; } Continue1: try { s = m_app.iimClose(close_timeout); } catch { // goto JustContinue; } JustContinue: m_app = null; // Get variable from macro and return // ************************************************* //Success = true; // TEMPORARY VALUE for DEBUGGING // ************************************************* return(QuestionLink); }
private void btPlayOnly_Click(object sender, EventArgs e) { for (int i = 0; i < 3; i++) { iMacros.App m_app = new iMacros.App(); iMacros.Status s = m_app.iimInit("", false, "", "", "", 5); if (s == iMacros.Status.sOk || s == iMacros.Status.sInternal) { s = m_app.iimPlay(tbIIM.Text, 300); } string result = m_app.iimGetLastError(); System.Threading.Thread.Sleep(10000); m_app.iimExit(); } }
/*Constructor SegundaMano*/ #region Constructor Clase public SegundaMano() { this.iWaitTime = 1; //Tiempo de espera para scrapear cada pagina globalCountMax = 25; //Cantidade de iteraciones para reiniciar el imacros this.globalCount = globalCountMax; this.context.Configuration.AutoDetectChangesEnabled = false; this.context.Configuration.ValidateOnSaveEnabled = false; this.htmlDoc = new HtmlDocument(); //Declaracion de la Instancia del imacros #region Instancia Imacros iMacros.Status status; app = new iMacros.AppClass(); status = app.iimInit("-tray", false); #endregion }
private bool DoWork(iMacros.App m_app, string IP) { iMacros.Status s = m_app.iimInit("", false, "", "", "", 5); if (s == iMacros.Status.sOk || s == iMacros.Status.sInternal) { m_app.iimSet("gotourl", string.Format(tbUrl.Text, IP)); m_app.iimSet("username", tbUsername.Text); m_app.iimSet("password", tbPassword.Text); s = m_app.iimPlay(tbIIM.Text, 300); string result = m_app.iimGetLastError(); lbResults.Items.Add(IP + "\t" + result); return(true); } else { //listBox1.Items.Add(IP + "\t " + m_app.iimGetLastError()); return(false); } }
/*Gestion de Memoria*/ #region Metodo responsable por gestionar la memoria limitada del imacros public void controlMemoriaImacros() { if (globalCount == 0) { app.iimClose(); app = new iMacros.AppClass(); status = app.iimInit("-tray", false); string sScript = ""; sScript = "CODE:" + Environment.NewLine; sScript += "CLEAR" + Environment.NewLine; sScript += "VERSION BUILD=9002379" + Environment.NewLine; sScript += "TAB T=1" + Environment.NewLine; sScript += "TAB CLOSEALLOTHERS" + Environment.NewLine; sScript += "FILTER TYPE=IMAGES STATUS=ON " + Environment.NewLine; app.iimPlay(sScript); globalCount = globalCountMax; } else { globalCount--; } }
public string[] CreateAccountWithCaptcha(Emailaccounts tblaccouts, string proxy, string CreateMacro) { string[] ErrAndId = new string[2]; Dictionary <string, string> props = ParseProperties(tblaccouts.Allproperties); iMacros.App m_app = new iMacros.App(); iMacros.Status s = new iMacros.Status(); s = m_app.iimOpen("", true, m_timeout); /* * s = m_app.iimSet("Username", username); * s = m_app.iimSet("Email", email); * s = m_app.iimSet("Password", pwd); * s = m_app.iimSet("FirstName", fname); * s = m_app.iimSet("Proxy", proxy); * s = m_app.iimSet("Topic", topic); */ // s = m_app.iimSet("Topic", topic); s = m_app.iimSet("Username", tblaccouts.Username); s = m_app.iimSet("Email", tblaccouts.Email); s = m_app.iimSet("Password", tblaccouts.Password); s = m_app.iimSet("FirstName", tblaccouts.FirstName); s = m_app.iimSet("LastName", tblaccouts.LastName); s = m_app.iimSet("BirthdayYYYYMMDD", tblaccouts.Birthday.ToString("yyyy-MM-dd")); s = m_app.iimSet("BirthdayDDMMYYYY", tblaccouts.Birthday.ToString("dd/MM/yyyy")); s = m_app.iimSet("BirthdayYYYY", tblaccouts.Birthday.ToString("yyyy")); s = m_app.iimSet("BirthdayYY", tblaccouts.Birthday.ToString("yy")); s = m_app.iimSet("BirthdayMM", tblaccouts.Birthday.ToString("MM")); s = m_app.iimSet("BirthdayMMM", tblaccouts.Birthday.ToString("MMM")); s = m_app.iimSet("BirthdayM", tblaccouts.Birthday.ToString("M")); s = m_app.iimSet("BirthdayDD", tblaccouts.Birthday.ToString("dd")); // FRENCH FORUMS: s = m_app.iimSet("StreetFR", tblaccouts.StreetFR); s = m_app.iimSet("PostalCodeFR", tblaccouts.PostalCodeFR); s = m_app.iimSet("CityFR", tblaccouts.CityFR); // AU and US: s = m_app.iimSet("PostalCodeAU", tblaccouts.PostalCodeAU); s = m_app.iimSet("PostalCodeUS", tblaccouts.PostalCodeFR); s = m_app.iimSet("PostalCodeDE", tblaccouts.PostalCodeDE); s = m_app.iimSet("Proxy", proxy); foreach (KeyValuePair <string, string> property in props) { s = m_app.iimSet(property.Key, property.Value); } // Execute macro s = m_app.iimPlayCode(CreateMacro, m_timeout); try { ErrAndId[1] = m_app.iimGetExtract(1); ErrAndId[0] = m_app.iimGetExtract(2); } catch { } try { s = m_app.iimClose(close_timeout); } catch { // goto JustContinue; } JustContinue: m_app = null; return(ErrAndId); }
public bool CreateAccountPurseBlog(string username, string email, string pwd, string fname, string proxy, string CreateMacro) { // STANDARD VARIABLES String result = ""; int errors = 0; string ConfirmationTxt = ""; int inc = 0; bool Success = false; if (email != "") { iMacros.App m_app = new iMacros.App(); iMacros.Status s = new iMacros.Status(); TryAgain: try { s = m_app.iimOpen("", true, m_timeout); if (s != iMacros.Status.sOk) { errors++; } result = result + "open " + Convert.ToString(s) + "; "; s = m_app.iimSet("Username", username); if (s != iMacros.Status.sOk) { errors++; } result = result + "set " + Convert.ToString(s) + "; "; s = m_app.iimSet("Email", email); if (s != iMacros.Status.sOk) { errors++; } result = result + "set " + Convert.ToString(s) + "; "; s = m_app.iimSet("Password", pwd); if (s != iMacros.Status.sOk) { errors++; } result = result + "set " + Convert.ToString(s) + "; "; s = m_app.iimSet("FirstName", fname); if (s != iMacros.Status.sOk) { errors++; } result = result + "set " + Convert.ToString(s) + "; "; s = m_app.iimSet("Proxy", proxy); if (s != iMacros.Status.sOk) { errors++; } result = result + "set " + Convert.ToString(s) + "; "; // Execute macro s = m_app.iimPlayCode(CreateMacro, m_timeout); if (s != iMacros.Status.sOk) { errors++; } result = result + "play " + Convert.ToString(s) + "; "; ConfirmationTxt = m_app.iimGetExtract(1); } catch { MessageBox.Show("Result: " + result); goto TryAgain; } string[] testsplit = ConfirmationTxt.Split(' '); if (ConfirmationTxt != "" && ConfirmationTxt != "NODATA" && ConfirmationTxt != "#EANF#" && testsplit.Count() >= 7) { string FinishCreateMacro = ""; FinishCreateMacro = FinishCreateMacro + "WAIT SECONDS=3" + "\n"; FinishCreateMacro = FinishCreateMacro + "TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:register ATTR=NAME:humanverify[input] CONTENT={{Solution}}" + "\n"; FinishCreateMacro = FinishCreateMacro + "TAG POS=1 TYPE=INPUT:CHECKBOX FORM=NAME:register ATTR=NAME:options[adminemail] CONTENT=NO" + "\n"; FinishCreateMacro = FinishCreateMacro + "WAIT SECONDS=3" + "\n"; FinishCreateMacro = FinishCreateMacro + "TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:register ATTR=CLASS:button" + "\n"; FinishCreateMacro = FinishCreateMacro + "WAIT SECONDS=3" + "\n"; s = m_app.iimSet("Solution", SolveCaptchaPurseBlog(ConfirmationTxt)); s = m_app.iimPlayCode(FinishCreateMacro, m_timeout); Success = true; // TEMPORARY VALUE for DEBUGGING } else { inc++; if (inc > 5) { Success = false; goto CloseApp; } s = m_app.iimClose(); m_app = null; goto TryAgain; } CloseApp: try { s = m_app.iimClose(close_timeout); } catch { // goto JustContinue; } JustContinue: m_app = null; // Get variable from macro and return } // ************************************************* // ************************************************* return(Success); }
public iMacrosPostReturnVars LoginAndPost(string Username, string Email, string Password, string Proxy, string LinkToPost, string GeneratedResponse, string macro) { string macrocheckifposted = ""; iMacrosPostReturnVars localposter = new iMacrosPostReturnVars(); macrocheckifposted = getCheckifpostedmacro(); iMacros.App m_app = new iMacros.App(); iMacros.Status s = new iMacros.Status(); s = m_app.iimOpen("", true, 5); s = m_app.iimSet("Username", Username); s = m_app.iimSet("Email", Email); s = m_app.iimSet("Password", Password); s = m_app.iimSet("Proxy", Proxy); s = m_app.iimSet("LinkToPost", LinkToPost); s = m_app.iimSet("Answer", GeneratedResponse); // Execute macro s = m_app.iimPlayCode(macro, m_timeout); string pattern = @"http://.+/"; Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase); MatchCollection matches = rgx.Matches(GeneratedResponse); if (matches.Count > 0) { foreach (Match match in matches) { s = m_app.iimSet("Shortener", match.Value); } } else { s = m_app.iimSet("Shortener", "http://eurl.me/"); } s = m_app.iimPlayCode(macrocheckifposted, m_timeout); if (m_app.iimGetExtract(1) != "#EANF#" && m_app.iimGetExtract(1) != "NODATA") { localposter.setSuccess(true); } else { localposter.setSuccess(false); } if (m_app.iimGetExtract(2) != "NODATA") { localposter.setReturnURL(m_app.iimGetExtract(2)); } try { s = m_app.iimClose(close_timeout); } catch { // goto JustContinue; } JustContinue: m_app = null; return(localposter); }
public bool ConfirmAccount(string email, ref string pwd, string lnkstructure, string sdremail, string proxy, int ShiftLinkBy) { // GET iMacros code (or use a static code) // SET Variables // Execute the code // Return Success / Failure confirmator = new HotmailPOP(); string LinkExtracted = confirmator.ExtractConfLink(email, pwd, lnkstructure, sdremail, ShiftLinkBy); // bool Success = false; if (LinkExtracted != null && LinkExtracted != "") { if (LinkExtracted.Length > 3) { if (LinkExtracted.Substring(0, 4) == "http") { // Static Code for all programs string macro = "Version Build = 8032216" + "\r\n"; macro = macro + "TAB T=1" + "\r\n"; macro = macro + "TAB CLOSEALLOTHERS" + "\r\n"; macro = macro + "URL GOTO=about:blank" + "\r\n"; macro = macro + "WAIT SECONDS=3" + "\r\n"; macro = macro + "PROXY ADDRESS={{Proxy}}" + "\r\n"; macro = macro + "ONLOGIN USER=Jukas PASSWORD=7qUzTq7V" + "\r\n"; macro = macro + "URL GOTO={{ConfLink}}" + "\r\n"; macro = macro + "WAIT SECONDS=3" + "\r\n"; iMacros.App m_app = new iMacros.App(); iMacros.Status s = new iMacros.Status(); s = m_app.iimOpen("", true, 5); s = m_app.iimSet("ConfLink", LinkExtracted); s = m_app.iimSet("Email", email); s = m_app.iimSet("Password", pwd); s = m_app.iimSet("Proxy", proxy); // Execute macro s = m_app.iimPlayCode(macro, m_timeout); // Success = m_app.iimGetExtract(1); try { s = m_app.iimClose(close_timeout); } catch { // goto JustContinue; } JustContinue: m_app = null; return(true); } else // if the extracted text is not HTTP, but a password: { pwd = LinkExtracted; return(true); } } else // if the extracted text is not HTTP, but a password: { pwd = LinkExtracted; return(true); } } else // if linkExtracted = null { return(false); } }
// string username, string email, string pwd, string fname public bool CreateAccount(Emailaccounts tblaccouts, string proxy, string CreateMacro) { bool Success = false; if (tblaccouts.Email != "") { Dictionary <string, string> props = ParseProperties(tblaccouts.Allproperties); // string property; iMacros.App m_app = new iMacros.App(); iMacros.Status s = new iMacros.Status(); s = m_app.iimOpen("", true, m_timeout); // Set field values. Some are not existent in some iMacros scripts. // But they are set to cover the full spectrum of iMacros. s = m_app.iimSet("Username", tblaccouts.Username); s = m_app.iimSet("Email", tblaccouts.Email); s = m_app.iimSet("Password", tblaccouts.Password); s = m_app.iimSet("FirstName", tblaccouts.FirstName); s = m_app.iimSet("LastName", tblaccouts.LastName); s = m_app.iimSet("BirthdayYYYYMMDD", tblaccouts.Birthday.ToString("yyyy-MM-dd")); s = m_app.iimSet("BirthdayDDMMYYYY", tblaccouts.Birthday.ToString("dd/MM/yyyy")); s = m_app.iimSet("BirthdayYYYY", tblaccouts.Birthday.ToString("yyyy")); s = m_app.iimSet("BirthdayYY", tblaccouts.Birthday.ToString("yy")); s = m_app.iimSet("BirthdayMM", tblaccouts.Birthday.ToString("MM")); s = m_app.iimSet("BirthdayM", tblaccouts.Birthday.ToString("M")); s = m_app.iimSet("BirthdayMMM", tblaccouts.Birthday.ToString("MMM")); s = m_app.iimSet("BirthdayDD", tblaccouts.Birthday.ToString("dd")); // FRENCH FORUMS: s = m_app.iimSet("StreetFR", tblaccouts.StreetFR); s = m_app.iimSet("PostalCodeFR", tblaccouts.PostalCodeFR); s = m_app.iimSet("CityFR", tblaccouts.CityFR); // AU and DE: s = m_app.iimSet("PostalCodeAU", tblaccouts.PostalCodeAU); s = m_app.iimSet("PostalCodeUS", tblaccouts.PostalCodeFR); s = m_app.iimSet("PostalCodeDE", tblaccouts.PostalCodeDE); s = m_app.iimSet("Proxy", proxy); foreach (KeyValuePair <string, string> property in props) { s = m_app.iimSet(property.Key, property.Value); } s = m_app.iimPlayCode(CreateMacro, m_timeout); try { s = m_app.iimClose(close_timeout); } catch { goto JustContinue; } JustContinue: m_app = null; } // ************************************************* Success = true; // TEMPORARY VALUE for DEBUGGING // ************************************************* return(Success); }
public void ScrapearPropriedade(int id_enlace_hijo) { #region 1. Declaracion Variables de Control var Hijo = context.Enlace_Hijo.First(a => a.id_enlace_hijo == id_enlace_hijo); //Lector optico para conversion de las imagenes en texto //Tessnet Tessnet = new Tessnet(); string sScript = ""; string sTxt = ""; int iThumbs = 0; Boolean bEndOfThumbs = false; int iFeatures = 1; Boolean bEnfOfFeatures = false; int iTelefono = 1; Boolean bEnfOfTelefono = false; string sTelefono = ""; int iDescripcion = 1; Boolean bEnfOfDescripcion = false; string sDescripcion = ""; string sDescripcionValue = ""; #endregion #region 2. Preparacion de las tablas para insercion //Configurando inserts a la base de datos. Enlace_Hijo_Detalle Detalle = new Enlace_Hijo_Detalle(); Detalle.id_enlace_hijo = id_enlace_hijo; //Limpiamos datos de las caracteristicas anteriores a la misma propriedade this.DeletarCaracteristica(id_enlace_hijo); this.DeletarDetalle(id_enlace_hijo); #endregion #region 3. Configuracion del script imacros //Preparacion del sScript de scrapping sScript = "CODE:" + Environment.NewLine; sScript += "CLEAR" + Environment.NewLine; sScript += "VERSION BUILD=9002379" + Environment.NewLine; sScript += "TAB T=1" + Environment.NewLine; sScript += "TAB CLOSEALLOTHERS" + Environment.NewLine; sScript += "FILTER TYPE=IMAGES STATUS=ON " + Environment.NewLine; sScript += "URL GOTO=" + Hijo.url + Environment.NewLine; sScript += "WAIT SECONDS=" + iWaitTime + Environment.NewLine; status = app.iimPlay(sScript); if (status.ToString() != "sOk") { erroScrapearPropriedade(id_enlace_hijo, status.ToString()); this.globalCount = 0; controlMemoriaImacros(); return; } #endregion #region 4. Validacion si el anuncio sigue disponible sScript = "CODE:TAG POS=1 TYPE=h2 ATTR=class:\"titleConfirmPayNotNeed\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); if (this.cleanString(app.iimGetLastExtract()) == "el anuncio que buscas no está en segundamano.es") { var disponible = context.Enlace_Hijo.SingleOrDefault(b => b.id_enlace_hijo == id_enlace_hijo); if (disponible != null) { context.Entry(disponible).State = System.Data.Entity.EntityState.Modified; disponible.scrapped_date = DateTime.Now; disponible.inactive_date = DateTime.Now; disponible.error_handler = "OK"; context.SaveChanges(); Console.WriteLine(id_enlace_hijo + " -> el anuncio que buscas no está en segundamano.es"); return; } } #endregion #region EXTRACT -> Nombre del piso sScript = "CODE:TAG POS=1 TYPE=h1 ATTR=class:\"productTitle\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); try { Detalle.nombre = this.cleanString(app.iimGetLastExtract()); } catch { Detalle.nombre = null; } Console.WriteLine(id_enlace_hijo + " -> " + Detalle.nombre + ": DONE"); #endregion #region EXTRACT -> Precio sScript = "CODE:TAG POS=1 TYPE=span ATTR=class:\"price\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); try { Detalle.precio = Convert.ToInt16(Regex.Replace(this.cleanString(app.iimGetLastExtract()), "[^0-9.]", "")); }catch { Detalle.precio = null; } #endregion #region EXTRACT -> Descripcion sScript = "CODE:TAG POS=1 TYPE=p ATTR=id:\"descriptionText\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); try { Detalle.descripcion = this.cleanString(app.iimGetLastExtract()); } catch { Detalle.descripcion = null; } #endregion #region EXTRACT -> Cuantidade de veces visto sScript = "CODE:TAG POS=1 TYPE=p ATTR=class:\"TimesSeen\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); try { Detalle.visitas = Convert.ToInt16(Regex.Replace(this.cleanString(app.iimGetLastExtract()), "[^0-9.]", "")); }catch { Detalle.visitas = null; } #endregion #region EXTRACT -> Nombre contacto sScript = "CODE:TAG POS=1 TYPE=span ATTR=class:\"Cname\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); try { Detalle.nombre_contacto = this.cleanString(app.iimGetLastExtract()); }catch { Detalle.nombre_contacto = null; } #endregion #region EXTRACT -> Tiene whatsapp sScript = "CODE:TAG POS=1 TYPE=div ATTR=class:\"whatsapp\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); try { Detalle.usuarioWhatsapp = this.cleanString(app.iimGetLastExtract()); } catch { Detalle.usuarioWhatsapp = null; } #endregion #region EXTRACT -> Bread crumbie con las categorias asociadas al piso - HTMLAGILEPACK try { sScript = "CODE:TAG POS=1 TYPE=p ATTR=class:\"breadcrumbs\" EXTRACT=HTM" + Environment.NewLine; app.iimPlay(sScript); sTxt = this.cleanString(app.iimGetLastExtract()); //HTMLAGILEPACK para parsear html htmlDoc.LoadHtml(sTxt); var ahrefs = htmlDoc.DocumentNode.SelectNodes("//a"); foreach (var input in ahrefs) { //Console.WriteLine(input.InnerText); Enlace_Hijo_Caracteristica Caracteristica = new Enlace_Hijo_Caracteristica(); Caracteristica.id_enlace_hijo = id_enlace_hijo; Caracteristica.caracteristica_validate = "CATEGORIA"; Caracteristica.tipo_validate = 2; Caracteristica.value = input.InnerText; Caracteristica.sysdate = DateTime.Now; context.Enlace_Hijo_Caracteristica.Add(Caracteristica); } sTxt = ""; } catch (Exception) { Console.WriteLine("Error BreadCrumbie:" + id_enlace_hijo); } #endregion #region EXTRACT -> Descripcion basica del piso - HTMLAGILEPACK try { sScript = "CODE:TAG POS=1 TYPE=dl ATTR=class:\"descriptionFeatures descriptionRight\" EXTRACT=HTM" + Environment.NewLine; app.iimPlay(sScript); sTxt = this.cleanString(app.iimGetLastExtract()); //HTMLAGILEPACK para parsear html htmlDoc.LoadHtml(sTxt); List <string> listaDT = new List <string>(); var dts = htmlDoc.DocumentNode.SelectNodes("//dt"); foreach (var input in dts) { listaDT.Add(input.InnerText); } List <string> listaDD = new List <string>(); var dds = htmlDoc.DocumentNode.SelectNodes("//dd"); foreach (var input in dds) { String abc = String.Empty; if (!input.Attributes.Contains(@"class")) { listaDD.Add(input.InnerText); } } for (int i = 0; i < listaDT.Count; i++) { Enlace_Hijo_Caracteristica Caracteristica = new Enlace_Hijo_Caracteristica(); Caracteristica.id_enlace_hijo = id_enlace_hijo; Caracteristica.caracteristica_validate = listaDT[i]; Caracteristica.tipo_validate = 4; Caracteristica.value = listaDD[i]; Caracteristica.sysdate = DateTime.Now; context.Enlace_Hijo_Caracteristica.Add(Caracteristica); } context.SaveChanges(); sTxt = ""; } catch (Exception) { Console.WriteLine("Error Descripcion basica:" + id_enlace_hijo); } #endregion #region EXTRACT -> Galeria de fotos do piso try { while (!bEndOfThumbs) { sScript = "CODE:TAG POS=1 TYPE=li ATTR=id:\"thumb" + iThumbs + "\" EXTRACT=HTM" + Environment.NewLine; app.iimPlay(sScript); sTxt = app.iimGetLastExtract(); if ((sTxt.IndexOf("#EANF#") >= 0) || (sTxt.IndexOf("NODATA") >= 0)) { bEndOfThumbs = true; } else { sTxt = sTxt.Replace("[EXTRACT]", ""); htmlDoc.LoadHtml(sTxt); List <string> listaImages = new List <string>(); var lis = htmlDoc.DocumentNode.SelectNodes("//li"); Enlace_Hijo_Caracteristica Caracteristica = new Enlace_Hijo_Caracteristica(); foreach (var input in lis) { sTxt = input.Attributes["onclick"].Value; sTxt = sTxt.Replace("show_image_detail(this.id,'", ""); sTxt = sTxt.Replace("');", ""); Caracteristica.id_enlace_hijo = id_enlace_hijo; Caracteristica.caracteristica_validate = "FOTO"; Caracteristica.tipo_validate = 1; Caracteristica.value = sTxt; Caracteristica.sysdate = DateTime.Now; } context.Enlace_Hijo_Caracteristica.Add(Caracteristica); context.SaveChanges(); } iThumbs++; } sTxt = ""; } catch (Exception) { Console.WriteLine("Error Images:" + id_enlace_hijo); } #endregion #region EXTRACT -> Lista de caracteristicas while (!bEnfOfFeatures) { sScript = "CODE:TAG POS=" + iFeatures + " TYPE=span ATTR=class:\"extra_features_detail extra_features_detail_sel\" EXTRACT=TXT" + Environment.NewLine; app.iimPlay(sScript); sTxt = app.iimGetLastExtract(); if (sTxt.IndexOf("#EANF#") >= 0) { bEnfOfFeatures = true; } else { sTxt = sTxt.Replace("[EXTRACT]", ""); Enlace_Hijo_Caracteristica Caracteristica = new Enlace_Hijo_Caracteristica(); Caracteristica.id_enlace_hijo = id_enlace_hijo; Caracteristica.caracteristica_validate = "UTILIDADE"; Caracteristica.tipo_validate = 3; Caracteristica.value = sTxt; Caracteristica.sysdate = DateTime.Now; context.Enlace_Hijo_Caracteristica.Add(Caracteristica); } iFeatures++; } context.SaveChanges(); #endregion #region EXTRACT -> Telefono sScript = ""; sScript = "CODE: SET !USERAGENT \"Mozilla/5.0 (Linux; U; Android 2.3.3; de-ch; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\"" + Environment.NewLine; sScript += "FILTER TYPE=IMAGES STATUS=ON " + Environment.NewLine; sScript += "URL GOTO=" + Hijo.url + Environment.NewLine; sScript += "WAIT SECONDS= 1" + Environment.NewLine; sScript += "TAG POS=1 TYPE=li ATTR=class:\"yellowButton adInfo_tel\" EXTRACT=TXT" + Environment.NewLine; sScript += "SET !USERAGENT \"\"" + Environment.NewLine; status = app.iimPlay(sScript); if (status.ToString() != "sOk") { erroScrapearPropriedade(id_enlace_hijo, status.ToString()); this.globalCount = 0; controlMemoriaImacros(); return; } try { Detalle.telefono = this.cleanString(app.iimGetLastExtract()); }catch { Detalle.telefono = null; } #endregion #region 5. Lanzamos el proceso que valida las nuevas caracteristicas*/ context.Database.ExecuteSqlCommand("SP_ENLACE_HIJO_CARACTERISTICA @id_enlace_hijo = {0}", id_enlace_hijo); #endregion #region 6. ################## Guardando nueva liena #################### Detalle.sysdate = DateTime.Now; context.Enlace_Hijo_Detalle.Add(Detalle); context.SaveChanges(); /*Actualizando status de la linea de Enlace Hijo*/ var result = context.Enlace_Hijo.SingleOrDefault(b => b.id_enlace_hijo == id_enlace_hijo); if (result != null) { context.Entry(result).State = System.Data.Entity.EntityState.Modified; result.scrapped_date = DateTime.Now; result.error_handler = "OK"; context.SaveChanges(); } #endregion }