예제 #1
0
        public int GetChapterPageCount(int ID)
        {
            var Page = GetChapterHtml(ID);

            string ChpScript = Page.SelectSingleNode("//script[contains(., \"chapterid\")]").InnerHtml;
            string CntScript = $"{ChpScript}imagecount;";

            return((int)JSTools.EvaluateScript(CntScript));
        }
예제 #2
0
        private string[] GetChapterPages(int ID)
        {
            var Page = GetChapterHtml(ID);

            string KeyScript = Page.SelectSingleNode("//script[contains(., \"eval\")]").InnerHtml;
            string ChpScript = Page.SelectSingleNode("//script[contains(., \"chapterid\")]").InnerHtml;

            KeyScript = $"function $(a) {{var a = []; a.val = function(b){{return b}}; return a}}\r\n{KeyScript}";

            string CntScript = $"{ChpScript}imagecount;";
            string CidScript = $"{ChpScript}chapterid;";

            int Count = (int)JSTools.EvaluateScript(CntScript);
            int ChpId = (int)JSTools.EvaluateScript(CidScript);

            string Key = (string)JSTools.EvaluateScript(KeyScript);


            string Link = ChapterLinks[ID];

            Link = Link.Substring(0, Link.LastIndexOf("/"));
            List <string> Pages = new List <string>();

            for (int i = 1; i <= Count;)
            {
                string URL = $"{Link}/chapterfun.ashx?cid={ChpId}&page={i}&key={Key}";
                string JS  = Encoding.UTF8.GetString(TryDownload(new Uri(URL), ChapterLinks[ID]));
                JS += "\r\nd.join('|');";
                string Result = (string)JSTools.EvaluateScript(JS);
                if (Result == null)
                {
                    break;
                }

                string[] cPages = Result.Split('|');
                for (int x = 0; x < cPages.Length; x++, i++)
                {
                    string cPage = cPages[x];
                    if (cPage.StartsWith("//"))
                    {
                        cPage = "https:" + cPage;
                    }

                    Pages.Add(cPage);
                }
            }

            return(Pages.ToArray());
        }
예제 #3
0
        private string[] GetChapterPages(int ID)
        {
            var Doc = new HtmlDocument();

            Doc.LoadUrl(new Uri(LinkMap[ID]));

            var Script = Doc.SelectSingleNode("//script[contains(., \"var pages\")]").InnerHtml;

            Script  = Script.Substring(0, Script.IndexOf("var next_chapter"));
            Script += "\r\nvar rst = []; for (var i = 0; i < pages.length; i++) rst.push(pages[i].url); rst;";

            var Rst = (List <object>)JSTools.EvaluateScript(Script);

            return((from x in Rst select(string) x).ToArray());
        }
예제 #4
0
        private string[] GetChapterPages(int ID)
        {
            var           Page  = GetChapterHtml(ID);
            List <string> Pages = new List <string>();

            var Scripts = Page.SelectNodes("//body//script[@type=\"text/javascript\"]");

            bool Found = false;

            foreach (var Node in Scripts)
            {
                if (!Node.InnerHtml.Contains("var images"))
                {
                    continue;
                }

                Found = true;

                string JS     = Node.InnerHtml.Substring("var images = ", "\"];") + "\"]";
                var    Result = (from x in JSTools.EvaluateScript <List <object> >(JS) select(string) x).ToArray();
                foreach (string PageHtml in Result)
                {
                    var PageUrl = PageHtml.Substring("src=", " ").Trim(' ', '\'', '"');
                    Pages.Add(PageUrl);
                }
            }

            if (!Found)
            {
                foreach (var Img in Page.SelectNodes("//section[@id='imageWrapper']//img"))
                {
                    Pages.Add(Img.GetAttributeValue("src", string.Empty));
                }
            }

            var Links = (from x in Pages select x.Replace(".webp", "").Replace("/images", "/mangas_files")).ToArray();

            if (Links.Where(x => string.IsNullOrEmpty(System.IO.Path.GetExtension(x))).Any())
            {
                return(Links.Select(x => x + ".webp").ToArray());
            }

            return(Links);
        }