public static bool IsLike(FetchPatern thisElem, FetchPatern withThisElem) { bool b = thisElem.BaseURL == withThisElem.BaseURL; if (b) { List <URLRequest> min = new List <URLRequest>(); List <URLRequest> max = new List <URLRequest>(); if (thisElem.Requests.Count > withThisElem.Requests.Count) { max = thisElem.Requests; min = withThisElem.Requests; } else { min = thisElem.Requests; max = withThisElem.Requests; } for (int i = 0; i < min.Count; i++) { if (max.FindIndex((r) => r.Name == min[i].Name) < 0) { return(false); } } } return(b); }
public FetchPatern(FetchPatern fp, string source, object extra) { Name = fp.Name; FetchType = fp.FetchType; Parent = fp.Parent; TransposeResult = fp.TransposeResult; TableAddress = ""; Source = source; FetchSuccessFul = false; Alert = fp.Alert; ValidURLCharacters = fp.ValidURLCharacters; IntervalDelay = fp.IntervalDelay; MaximumTry = fp.MaximumTry; BaseURL = fp.BaseURL; Requests = new List <URLRequest>(); foreach (var item in fp.Requests) { Requests.Add(new URLRequest(item)); } HTMLElementsPatern = new List <HTMLElementPatern>(); foreach (var item in fp.HTMLElementsPatern) { HTMLElementsPatern.Add(new HTMLElementPatern(item)); } SampleHTMLElements = fp.SampleHTMLElements; Extra = extra ?? fp.Extra; }
public bool NavigateNext() { if (!IsGetTableRun) { return(false); } bool b = FetchQueue.Count > 0; fetch_try_interval = 0; if (b) { GettingTableStart(this, fetch_url = FetchQueue.Dequeue()); if (fetch_url.IsLoop()) { FetchQueue.Enqueue(fetch_url); } fetch_timer.Interval = fetch_url.IntervalDelay; fetch_browser.Tag = fetch_url.URL; fetch_browser.Navigate(new Uri(fetch_url.URL)); if (fetch_url.IsInteractive()) { PauseFetch(); GettingTableInteractivePause(this, fetch_url, "Process is paused for get a new order!"); } } else { IsGetTableRun = false; MiMFa_ControlService.WebBrowserDocument(ref fetch_browser, FinishDocument); GetTableComplete(this, fetch_url); fetch_url = new FetchPatern(); } return(b); }
public FetchPatern FindFetchPaternFor(FetchPatern up) { FetchPatern fp = DefaultPatern; if (Paterns.Count > 0) { int index = Paterns.FindIndex((ur) => ur.IsSame(up)); if (index < 0) { index = Paterns.FindIndex((ur) => ur.IsLike(up)); } if (index < 0) { string bss = MiMFa_StringService.LastFindAndSplit(up.BaseURL.TrimEnd(' ', '/'), "/").First(); index = Paterns.FindIndex((ur) => MiMFa_StringService.LastFindAndSplit(ur.BaseURL.TrimEnd(' ', '/'), "/").First() == bss); if (index < 0) { index = Paterns.FindIndex((ur) => MiMFa_StringService.LastFindAndSplit(ur.BaseURL.TrimEnd(' ', '/'), "/").First().StartsWith(bss)); } } if (index > -1) { fp = Paterns[index]; } } return(new FetchPatern(fp, up.URL, up.Source, up.Extra)); }
public void CurrentPaternChange(FetchPatern patern) { fetch_url = patern; fetch_timer.Interval = fetch_url.IntervalDelay; IsGetTableRun = true; CurrentPaternChanged(this, fetch_url); }
public FetchPatern(FetchPatern fp, string url) { Name = fp.Name; FetchType = fp.FetchType; Parent = fp.Parent; TransposeResult = fp.TransposeResult; TableAddress = ""; FetchSuccessFul = false; ValidURLCharacters = fp.ValidURLCharacters; Source = fp.Source; Alert = fp.Alert; IntervalDelay = fp.IntervalDelay; MaximumTry = fp.MaximumTry; Extra = fp.Extra; url = MiMFa_Convert.ToAbsoluteURL(url); var gurl = CreateURLPaternKeyValuePair(url, fp.Requests, fp.ValidURLCharacters); BaseURL = gurl.Key; Requests = gurl.Value; HTMLElementsPatern = new List <HTMLElementPatern>(); foreach (var item in fp.HTMLElementsPatern) { HTMLElementsPatern.Add(new HTMLElementPatern(item)); } SampleHTMLElements = fp.SampleHTMLElements; }
public void AppendInFetchQueue(FetchPatern url, bool start = false) { FetchQueue.Enqueue(url); if (start) { StartFetch(false); } }
public FetchPatern GetCurrentPatern() { FetchPatern fp = fetch_webpatern.FindFetchPatern(fetch_browser.Url + "", fetch_url.Source); fp.Parent = fetch_url; fp.Extra = fetch_url.Extra; return(fp); }
public FetchPatern GetCurrentChildPatern() { //FetchPatern fp = fetch_webpatern.FindFetchPaternChildFor(fetch_browser.Url + "",fetch_url.Source); FetchPatern fp = fetch_webpatern.FindFetchPaternChildFor(new FetchPatern("", fetch_browser.Url + "", fetch_url, FetchType.Simple, fetch_url.Source, fetch_url.TransposeResult, fetch_url.ValidURLCharacters, fetch_url.IntervalDelay, fetch_url.MaximumTry, fetch_url.Alert, fetch_url.Extra)); fp.Parent = fetch_url; fp.Extra = fetch_url.Extra; return(fp); }
public FetchPatern[] CreateFetchPaternsFor(string source, object extra, params string[] values) { FetchPatern[] fpa = new FetchPatern[values.Length]; for (int i = 0; i < values.Length; i++) { fpa[i] = CreateFetchPaternFor(source, values[i], extra); } return(fpa); }
public FetchPatern Create(string value, string source, object extra = null) { FetchPatern fp = new FetchPatern(this, source, extra); for (int i = 0; i < fp.Requests.Count; i++) { if (fp.Requests[i].AllowReplaceValue) { fp.Requests[i] = new URLRequest(fp.Requests[i].Name, fp.Requests[i].DefaultValue, value, fp.Requests[i].Title, ValidURLCharacters); } } return(fp); }
public FetchPatern Create(string source, object extra, params string[] values) { FetchPatern fp = new FetchPatern(this, source, extra); int j = 0; for (int i = 0; i < fp.Requests.Count; i++) { if (fp.Requests[i].AllowReplaceValue) { fp.Requests[i] = new URLRequest(fp.Requests[i].Name, fp.Requests[i].DefaultValue, values.Length > j?values[j++]:"", fp.Requests[i].Title, ValidURLCharacters); } } return(fp); }
public static FetchPatern UpdateURLRequests(FetchPatern fp, string value) { if (value == null) { return(fp); } for (int i = 0; i < fp.Requests.Count; i++) { if (fp.Requests[i].AllowReplaceValue) { fp.Requests[i] = new URLRequest(fp.Requests[i].Name, value, fp.Requests[i].Title, fp.Requests[i].AllowReplaceValue, fp.ValidURLCharacters); } } return(fp); }
public static bool IsSame(FetchPatern thisElem, FetchPatern withThisElem) { bool b = thisElem.Name == withThisElem.Name && thisElem.BaseURL == withThisElem.BaseURL && thisElem.Requests.Count == withThisElem.Requests.Count; if (b) { for (int i = 0; i < thisElem.Requests.Count; i++) { if (withThisElem.Requests.FindIndex((r) => r.Name == thisElem.Requests[i].Name) < 0) { return(false); } } } return(b); }
public static FetchPatern UpdateURLRequests(FetchPatern fp, params string[] values) { if (values.Length < 1) { return(fp); } int r = 0; for (int i = 0; i < fp.Requests.Count; i++) { if (fp.Requests[i].AllowReplaceValue) { fp.Requests[i] = new URLRequest(fp.Requests[i].Name, values.Length > r?values[r++]:"", fp.Requests[i].Title, fp.Requests[i].AllowReplaceValue, fp.ValidURLCharacters); } } return(fp); }
public static FetchPatern AppendLocalURL(FetchPatern fp, string baseurl, object extra = null) { bool b0 = fp.BaseURL.EndsWith("/"); bool b1 = baseurl.StartsWith("/"); if (b0 != b1) { fp.BaseURL += baseurl; } else if (!b0) { fp.BaseURL += "/" + baseurl; } else { fp.BaseURL += baseurl.Substring(1); } fp.Extra = extra; return(fp); }
public void SetBrowser(WebBrowser wb) { fetch_browser = wb; fetch_browser.ScriptErrorsSuppressed = true; MiMFa_ControlService.WebBrowserDocument(ref fetch_browser, BeginDocument); fetch_browser.Navigated += (s, e) => { if (!IsGetTableCompleted) { if (!fetch_url.IsInteractive()) { fetch_url = GetCurrentPatern(); } URLNavigated(fetch_browser, fetch_url); } }; fetch_browser.NewWindow += (s, e) => { e.Cancel = true; fetch_browser.Navigate(fetch_browser.StatusText); }; }
public static FetchPatern ChangeBaseURL(FetchPatern fp, string baseurl, object extra = null) { fp.BaseURL = baseurl + ""; return(fp); }
public FetchPatern FindFetchPatern(FetchPatern up) { FetchPatern fp = DefaultPatern; if (Paterns.Count > 0) { int index = -1; if (up.Parent != null) { FetchPatern parent = (FetchPatern)up.Parent; try { index = Paterns.FindIndex((ur) => ur.Name == up.Name && ur.Parent != null && ((FetchPatern)ur.Parent).IsDuplicate(parent)); } catch { } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsDuplicate(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsDuplicate(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsSame(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsDuplicate(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsLike(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsDuplicate(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.Name == up.Name && ur.Parent != null && ((FetchPatern)ur.Parent).IsSame(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsDuplicate(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsSame(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsSame(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsSame(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsLike(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsSame(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.Name == up.Name && ur.Parent != null && ((FetchPatern)ur.Parent).IsLike(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsDuplicate(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsLike(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsSame(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsLike(parent)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsLike(up) && ur.Parent != null && ((FetchPatern)ur.Parent).IsLike(parent)); } catch { } } } else { try { index = Paterns.FindIndex((ur) => ur.Parent != null && ((FetchPatern)ur.Parent).IsDuplicate(up)); } catch { } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.Parent != null && ((FetchPatern)ur.Parent).IsSame(up)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.Parent != null && ((FetchPatern)ur.Parent).IsLike(up)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.Parent == null && ur.Name == up.Name); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsDuplicate(up)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsSame(up)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.IsLike(up)); } catch { } } if (index < 0) { try { index = Paterns.FindIndex((ur) => ur.Name == up.Name); } catch { } } } if (index > -1) { fp = Paterns[index]; } else { return(FindFetchPaternFor(up)); } } return(new FetchPatern(fp, up.URL, up.Source, up.Extra)); }
public MiMFa_Table GetTable(FetchPatern patern) { return(GetTable(patern, MiMFa_Convert.ToMiMFaHTMLElements(fetch_browser))); }
public bool IsLike(FetchPatern withThisElement) { return(IsLike(this, withThisElement)); }
public MiMFa_Table GetTable(FetchPatern patern, List <MiMFa_XMLElement> xmls) { MiMFa_Table mdt = new MiMFa_Table(); if (patern.HTMLElementsPatern == null) { return(mdt); } List <HTMLElementPatern> continuehep = new List <HTMLElementPatern>(); MiMFa_CollectionService.CopyTo(ref continuehep, patern.HTMLElementsPatern); List <MiMFa_XMLElement> me = new List <MiMFa_XMLElement>(); foreach (var item in patern.HTMLElementsPatern) { me.Add(item.SampleHTMLElement); } MiMFa_XMLElement e = MiMFa_XMLElement.GetElementsCommonParent(me); while (continuehep.Count > 0) { if (e != null) { e = MiMFa_XMLElement.Find(xmls, e); } List <MiMFa_XMLElement> scope = e == null ? xmls : new List <MiMFa_XMLElement>() { e }; bool all = false; MiMFa_XMLElement elem = null; int len = continuehep.Count; for (int i = 0; i < len; i++) { MiMFa_XMLElement ele = null; mdt = GetTable(mdt, continuehep[i], scope, out ele); if (continuehep[i].All != MiMFa_Boolean.True) { continuehep.RemoveAt(i); i--; len--; } else if (ele != null) { elem = ele; all = true; } if (ele != null) { if (continuehep.Count - 1 > i + 1 && continuehep[i].SampleHTMLElement == continuehep[i + 1].SampleHTMLElement.Parent) { ele.StartTag = ""; } else { xmls = MiMFa_XMLElement.GetLastSplitIn(xmls, ele); } } } if (e == null) { break; } if (elem == null) { xmls = MiMFa_XMLElement.GetLastSplitIn(xmls, e); } else if (all) { xmls = MiMFa_XMLElement.GetLastSplitIn(xmls, elem); } else { break; } } // if (fetch_url.TransposeResult) { mdt = mdt.Transpose(true); } NumberOfLastTableRows = mdt.MainTable.Rows.Count - 1; NumberOfAllTableRows += NumberOfLastTableRows; if (string.IsNullOrWhiteSpace(fetch_url.TableAddress)) { fetch_url.TableAddress = TempDirectory + DateTime.Now.Ticks + MiMFa_Table.Extention; } if (NumberOfLastTableRows > 0) { try { if (!string.IsNullOrWhiteSpace(fetch_url.Source)) { DataColumn dcs = mdt.AddColumnSafe("auto_Source"); for (int i = 1; i < mdt.Rows.Count; i++) { mdt.Rows[i][dcs] = fetch_url.Source; } } } catch { } } try { MiMFa_Table nmt = null; MiMFa_IOService.OpenDeserializeFile(fetch_url.TableAddress, ref nmt); if (nmt != null) { nmt = MiMFa_Table.ConcatTable(nmt, mdt); } } catch { } MiMFa_IOService.SaveSerializeFile(fetch_url.TableAddress, mdt); return(mdt); }
public static bool IsInteractive(FetchPatern fp) { return(fp.FetchType == FetchType.InterActiveLoop || fp.FetchType == FetchType.InterActive); }