コード例 #1
0
        private int GetSubCategories(Category parentCategory, string url)
        {
            string webData;
            int    p = url.IndexOf('#');

            if (p >= 0)
            {
                string nm = url.Substring(p + 1);
                webData = GetWebData(url.Substring(0, p), cookies: cc, forceUTF8: true);
                webData = @"class=""listbig"">" + Helpers.StringUtils.GetSubString(webData, @"class=""listbig""><a name=""" + nm + @"""", @"class=""listbig""");
            }
            else
            {
                webData = GetWebData(url, cookies: cc, forceUTF8: true);
            }

            parentCategory.SubCategories = new List <Category>();
            Match m = null;

            switch ((Depth)parentCategory.Other)
            {
            case Depth.MainMenu:
                webData = Helpers.StringUtils.GetSubString(webData, @"class=""pagination""", @"class=""listbig""");
                m       = regex_Az.Match(webData);
                break;

            case Depth.Alfabet:
                //webData = Helpers.StringUtils.GetSubString(webData, @"class=""listbig""", @"class=""clear""");
                m = regEx_dynamicSubCategories.Match(webData);
                break;

            case Depth.Series:
                Match m2 = Regex.Match(webData, @"imdb\.com/title/(?<imdbId>[^/]*)/");
                webData = Helpers.StringUtils.GetSubString(webData, @"class=""lists"" >", @"class=""clear""");
                string[] tmp     = { @"class=""lists"" >" };
                string[] seasons = webData.Split(tmp, StringSplitOptions.RemoveEmptyEntries);
                foreach (string s in seasons)
                {
                    SeriesRssLink cat = new SeriesRssLink();
                    if (m2.Success)
                    {
                        cat.imDbId = m2.Groups["imdbId"].Value;
                    }

                    cat.Name = HttpUtility.HtmlDecode(Helpers.StringUtils.GetSubString(s, @"name"">", "<")).Trim();
                    cat.Url  = s;
                    cat.SubCategoriesDiscovered = true;
                    cat.HasSubCategories        = false;
                    cat.Other = ((Depth)parentCategory.Other) + 1;

                    parentCategory.SubCategories.Add(cat);
                    cat.ParentCategory = parentCategory;
                }
                break;

            default:
                m = null;
                break;
            }

            while (m != null && m.Success)
            {
                RssLink cat = new RssLink();
                cat.Name = HttpUtility.HtmlDecode(m.Groups["title"].Value).Trim();
                cat.Url  = m.Groups["url"].Value;
                if (!String.IsNullOrEmpty(cat.Url) && !Uri.IsWellFormedUriString(cat.Url, System.UriKind.Absolute))
                {
                    cat.Url = new Uri(new Uri(baseUrl), cat.Url).AbsoluteUri;
                }

                cat.Description      = HttpUtility.HtmlDecode(m.Groups["description"].Value);
                cat.HasSubCategories = !parentCategory.Other.Equals(Depth.Series);
                cat.Other            = ((Depth)parentCategory.Other) + 1;

                if (cat.Name == "NEW")
                {
                    cat.HasSubCategories = false;
                    cat.Other            = Depth.BareList;
                }

                parentCategory.SubCategories.Add(cat);
                cat.ParentCategory = parentCategory;
                m = m.NextMatch();
            }

            parentCategory.SubCategoriesDiscovered = true;
            return(parentCategory.SubCategories.Count);
        }
コード例 #2
0
        private int GetSubCategories(Category parentCategory, string url)
        {
            string webData;
            int    p = url.IndexOf('#');

            if (p >= 0)
            {
                string nm = url.Substring(p + 1);
                webData = GetWebData(url.Substring(0, p), cookies: cc, forceUTF8: true);
                webData = @"class=""listbig"">" + Helpers.StringUtils.GetSubString(webData, @"class=""listbig""><a name=""" + nm + @"""", @"class=""listbig""");
            }
            else
            {
                webData = GetWebData(url, cookies: cc, forceUTF8: true);
            }

            parentCategory.SubCategories = new List <Category>();
            Match m = null;

            switch ((Depth)parentCategory.Other)
            {
            case Depth.MainMenu:
                webData = Helpers.StringUtils.GetSubString(webData, @"class=""pagination""", @"class=""listbig""");
                m       = regex_Az.Match(webData);
                break;

            case Depth.Alfabet:
                //webData = Helpers.StringUtils.GetSubString(webData, @"class=""listbig""", @"class=""clear""");
                m = regEx_dynamicSubCategories.Match(webData);
                break;

            case Depth.Series:
                Match m2 = Regex.Match(webData, @"imdb\.com/title/(?<imdbId>[^/]*)/");
                Match m3 = Regex.Match(webData, @"function\sloadMoreLinks\(season\)\s{\s*\$\.post\(\s*'(?<url>[^']*)',\s*{(?<postdata>[^}]*)}", defaultRegexOptions);
                webData = Helpers.StringUtils.GetSubString(webData, @"class=""lists"" >", @"class=""clear"" ");
                string[] tmp     = { @"class=""lists"" >" };
                string[] seasons = webData.Split(tmp, StringSplitOptions.RemoveEmptyEntries);
                foreach (string s in seasons)
                {
                    SeriesRssLink cat = new SeriesRssLink();
                    if (m2.Success)
                    {
                        cat.imDbId = m2.Groups["imdbId"].Value;
                    }

                    cat.Name = HttpUtility.HtmlDecode(Helpers.StringUtils.GetSubString(s, @"name"">", "<")).Trim();
                    cat.Url  = s;
                    cat.SubCategoriesDiscovered = true;
                    cat.HasSubCategories        = false;
                    Match m4 = Regex.Match(s, @"javascript:loadMoreLinks\((?<season>\d+)\)");
                    if (m4.Success && m3.Success)
                    {
                        string posturl  = m3.Groups["url"].Value;
                        Match  m5       = Regex.Match(m3.Groups["postdata"].Value, @"'(?<key>[^']*)'\s*:\s*(?:')?(?<value>[^',]*)");
                        string postData = "";
                        while (m5.Success)
                        {
                            postData += "&" + m5.Groups["key"].Value + "=";
                            if (m5.Groups["key"].Value == "season")
                            {
                                postData += m4.Groups["season"].Value;
                            }
                            else
                            {
                                postData += m5.Groups["value"].Value;
                            }
                            m5 = m5.NextMatch();
                        }
                        cat.Other = new Tuple <string, string>(posturl, postData.Substring(1));
                    }
                    else
                    {
                        cat.Other = ((Depth)parentCategory.Other) + 1;
                    }

                    parentCategory.SubCategories.Add(cat);
                    cat.ParentCategory = parentCategory;
                }
                break;

            default:
                m = null;
                break;
            }

            while (m != null && m.Success)
            {
                RssLink cat = new RssLink();
                cat.Name = HttpUtility.HtmlDecode(m.Groups["title"].Value).Trim();
                cat.Url  = m.Groups["url"].Value;
                if (!String.IsNullOrEmpty(cat.Url) && !Uri.IsWellFormedUriString(cat.Url, System.UriKind.Absolute))
                {
                    cat.Url = new Uri(new Uri(baseUrl), cat.Url).AbsoluteUri;
                }

                cat.Description      = HttpUtility.HtmlDecode(m.Groups["description"].Value);
                cat.HasSubCategories = !parentCategory.Other.Equals(Depth.Series);
                cat.Other            = ((Depth)parentCategory.Other) + 1;

                if (cat.Name == "NEW")
                {
                    cat.HasSubCategories = false;
                    cat.Other            = Depth.BareList;
                }

                parentCategory.SubCategories.Add(cat);
                cat.ParentCategory = parentCategory;
                m = m.NextMatch();
            }

            parentCategory.SubCategoriesDiscovered = true;
            return(parentCategory.SubCategories.Count);
        }
コード例 #3
0
        private int GetSubCategories(Category parentCategory, string url)
        {
            string webData;
            int p = url.IndexOf('#');
            if (p >= 0)
            {
                string nm = url.Substring(p + 1);
                webData = GetWebData(url.Substring(0, p), cookies: cc, forceUTF8: true);
                webData = @"class=""listbig"">" + Helpers.StringUtils.GetSubString(webData, @"class=""listbig""><a name=""" + nm + @"""", @"class=""listbig""");
            }
            else
                webData = GetWebData(url, cookies: cc, forceUTF8: true);

            parentCategory.SubCategories = new List<Category>();
            Match m = null;
            switch ((Depth)parentCategory.Other)
            {
                case Depth.MainMenu:
                    webData = Helpers.StringUtils.GetSubString(webData, @"class=""pagination""", @"class=""listbig""");
                    m = regex_Az.Match(webData);
                    break;
                case Depth.Alfabet:
                    webData = Helpers.StringUtils.GetSubString(webData, @"class=""listbig""", @"class=""clear""");
                    m = regEx_dynamicSubCategories.Match(webData);
                    break;
                case Depth.Series:
                    Match m2 = Regex.Match(webData, @"imdb\.com/title/(?<imdbId>[^/]*)/");
                    webData = Helpers.StringUtils.GetSubString(webData, @"class=""lists"">", @"class=""clear""");
                    string[] tmp = { @"class=""lists"">" };
                    string[] seasons = webData.Split(tmp, StringSplitOptions.RemoveEmptyEntries);
                    foreach (string s in seasons)
                    {
                        SeriesRssLink cat = new SeriesRssLink();
                        if (m2.Success)
                            cat.imDbId = m2.Groups["imdbId"].Value;

                        cat.Name = HttpUtility.HtmlDecode(Helpers.StringUtils.GetSubString(s, ">", "<")).Trim();
                        cat.Url = s;
                        cat.SubCategoriesDiscovered = true;
                        cat.HasSubCategories = false;
                        cat.Other = ((Depth)parentCategory.Other) + 1;

                        parentCategory.SubCategories.Add(cat);
                        cat.ParentCategory = parentCategory;
                    }
                    break;
                default:
                    m = null;
                    break;
            }

            while (m != null && m.Success)
            {
                RssLink cat = new RssLink();
                cat.Name = HttpUtility.HtmlDecode(m.Groups["title"].Value).Trim();
                cat.Url = m.Groups["url"].Value;
                if (!String.IsNullOrEmpty(cat.Url) && !Uri.IsWellFormedUriString(cat.Url, System.UriKind.Absolute))
                    cat.Url = new Uri(new Uri(baseUrl), cat.Url).AbsoluteUri;

                cat.Description = HttpUtility.HtmlDecode(m.Groups["description"].Value);
                cat.HasSubCategories = !parentCategory.Other.Equals(Depth.Series);
                cat.Other = ((Depth)parentCategory.Other) + 1;

                if (cat.Name == "NEW")
                {
                    cat.HasSubCategories = false;
                    cat.Other = Depth.BareList;
                }

                parentCategory.SubCategories.Add(cat);
                cat.ParentCategory = parentCategory;
                m = m.NextMatch();
            }

            parentCategory.SubCategoriesDiscovered = true;
            return parentCategory.SubCategories.Count;
        }