Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
 public void CurrentPaternChange(FetchPatern patern)
 {
     fetch_url            = patern;
     fetch_timer.Interval = fetch_url.IntervalDelay;
     IsGetTableRun        = true;
     CurrentPaternChanged(this, fetch_url);
 }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
 public void AppendInFetchQueue(FetchPatern url, bool start = false)
 {
     FetchQueue.Enqueue(url);
     if (start)
     {
         StartFetch(false);
     }
 }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 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);
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
 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);
 }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
 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);
     };
 }
Exemplo n.º 18
0
 public static FetchPatern ChangeBaseURL(FetchPatern fp, string baseurl, object extra = null)
 {
     fp.BaseURL = baseurl + "";
     return(fp);
 }
Exemplo n.º 19
0
        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));
        }
Exemplo n.º 20
0
 public MiMFa_Table GetTable(FetchPatern patern)
 {
     return(GetTable(patern, MiMFa_Convert.ToMiMFaHTMLElements(fetch_browser)));
 }
Exemplo n.º 21
0
 public bool IsLike(FetchPatern withThisElement)
 {
     return(IsLike(this, withThisElement));
 }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 23
0
 public static bool IsInteractive(FetchPatern fp)
 {
     return(fp.FetchType == FetchType.InterActiveLoop || fp.FetchType == FetchType.InterActive);
 }