예제 #1
0
        public async Task <Tuple <List <object>, int> > GetImagesTaskAsync(string url)
        {
            var l        = new List <object>();
            var blankurl = url.Remove(url.Length - 1);
            //Last Page (20)
            var document = await _webParser.GetHtmlSourceDocumentAsync(url);

            var pages = Regex.Match(document.DocumentElement.InnerHtml, @"Last Page \((\d+)\)").Groups[1].Value;

            int.TryParse(pages, out int p);
            //l.Add(document.All.First(i=> i.LocalName=="img" && i.GetAttribute("id") == "manga-page").GetAttribute("src"));
            for (var i = 1; i <= p; i++)
            {
                document = await _webParser.GetHtmlSourceDocumentAsync(blankurl + i);

                var img =
                    document.All.First(im => im.LocalName == "img" && im.GetAttribute("id") == "manga-page")
                    .GetAttribute("src");
                if (img.StartsWith("//"))
                {
                    img = $"http:{img}";
                }
                l.Add(img);
            }
            return(new Tuple <List <object>, int>(l, p));
        }
예제 #2
0
        public async Task <Tuple <List <object>, int> > GetImagesTaskAsync(string url)
        {
            //<div class="text">18 ⤵</div>
            var baserl = url;
            var imges  = new List <object>();

            if (!url.EndsWith("page/1"))
            {
                url = url + "page/1";
            }
            var html = await _webParser.GetHtmlSourceDocumentAsync(url);

            imges.Add(html.All.First(i => i.LocalName == "img" && i.ClassList.Contains("open") &&
                                     i.HasAttribute("src") &&
                                     i.GetAttribute("src")
                                     .Contains("http://sensescans.com/reader/content/comics/"))
                      .GetAttribute("src"));
            var pages =
                Regex.Match(html.DocumentElement.InnerHtml, @">([0-9]+) ⤵</div>", RegexOptions.IgnoreCase).Groups[1]
                .Value.Trim().Trim('.');
            var intpages = int.Parse(pages);

            for (var i = 2; i <= intpages; i++)
            {
                url  = baserl + $"page/{i}";
                html = await _webParser.GetHtmlSourceDocumentAsync(url);

                imges.Add(html.All.First(x => x.LocalName == "img" && x.ClassList.Contains("open") &&
                                         x.HasAttribute("src") &&
                                         x.GetAttribute("src")
                                         .Contains("http://sensescans.com/reader/content/comics/"))
                          .GetAttribute("src"));
            }
            return(new Tuple <List <object>, int>(imges, intpages));
        }
예제 #3
0
        private async Task <Dictionary <string, string> > _load2Pages(string link)
        {
            var m    = new Dictionary <string, string>();
            var html = await _webParser.GetHtmlSourceDocumentAsync(link);

            var a =
                html.All.Where(
                    x =>
                    x.LocalName == "a" && x.HasAttribute("href") &&
                    x.GetAttribute("href").Contains("http://www.heymanga.me/manga/"));

            foreach (var element in a.Reverse())
            {
                try {
                    if (m.Keys.Contains(element.GetAttribute("href")))
                    {
                        continue;
                    }
                    m.Add(element.GetAttribute("href"), element.Children[0].InnerHtml);
                }
                catch (Exception e) {
                    Console.WriteLine(e);
                    throw;
                }
            }
            return(m);
        }
예제 #4
0
        public async Task CheckAll(Action <IManga> status)
        {
            var all      = _dbContext.GetMangasFrom(DbName);
            var openlink = _dbContext.GetOpenLinks();

            foreach (var manga in all)
            {
                status.Invoke(manga);
                if (string.IsNullOrEmpty(manga.BaseMangaLink))
                {
                    continue;
                }
                var html = await _webParser.GetHtmlSourceDocumentAsync(manga.BaseMangaLink.TrimEnd('/'));

                if (html == null)
                {
                    continue;
                }
                var tr =
                    html.All.Where(
                        t => t.LocalName == "tr" && t.Children.Length == 2 &&
                        t.Children[0].InnerHtml.Contains("chico"));
                foreach (var element in tr)
                {
                    var title = element.Children[0].Children[1].TextContent.Trim();
                    if (title.Contains("Chapter Name"))
                    {
                        continue;
                    }
                    var newDate = DateTime.Parse(element.Children[1].TextContent.Trim('\n').Trim(),
                                                 CultureInfo.InvariantCulture);
                    var link = "http://mangareader.net" + element.Children[0].Children[1].GetAttribute("href");
                    if (!title.ToLower().Contains(manga.Name.ToLower()))
                    {
                        continue;
                    }
                    var nc =
                        title.ToLower().Replace(manga.Name.ToLower(), string.Empty).Trim();
                    if (nc.Contains(" "))
                    {
                        nc = nc.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[0];
                    }
                    var isNew = _newChapterHelper.IsNew(manga, nc, newDate,
                                                        link, openlink);
                }
                await Task.Delay(500);
            }
        }
예제 #5
0
        public async Task <Tuple <List <object>, int> > GetImagesTaskAsync(string url)
        {
            //<div class="text">18 ⤵</div>
            var baserl = url;
            var imges  = new List <object>();

            var html = await _webParser.GetHtmlSourceDocumentAsync(url);

            imges.AddRange(html.All.Where(i => i.LocalName == "img" && i.ClassList.Contains("img-lazy") &&
                                          i.HasAttribute("src") &&
                                          i.GetAttribute("src").Contains("https://mangazuki.co/img/series/"))
                           .Select(i => i.GetAttribute("src")));
            var pages = imges.Count;

            return(new Tuple <List <object>, int>(imges, pages));
        }
예제 #6
0
        public async Task CheckAll(Action <IManga> status)
        {
            var all      = _dbContext.GetMangasFrom(DbName);
            var openlink = _dbContext.GetOpenLinks();

            foreach (var manga in all)
            {
                status.Invoke(manga);
                var html = await _webParser.GetHtmlSourceDocumentAsync(manga.BaseMangaLink);

                if (html == null)
                {
                    continue;
                }
                var tr = html.All.Where(t => t.LocalName == "tr" && t.Children.Length == 2);
                foreach (var element in tr.Reverse())
                {
                    var title = element.Children[0].TextContent.Trim();
                    if (title.Contains("Chapter Name"))
                    {
                        continue;
                    }
                    var newDate = DateTime.Parse(element.Children[1].TextContent.Trim('\n').Trim(),
                                                 CultureInfo.InvariantCulture);
                    var link = "http://kissmanga.com" + element.Children[0].Children[0].GetAttribute("href");
                    if (!title.ToLower().Contains(manga.Name.ToLower()))
                    {
                        continue;
                    }
                    var nc =
                        title.ToLower().Replace($"{manga.Name.ToLower()}", string.Empty).Trim();
                    var nnc = Regex.Match(nc, @"(ch\. | chapter )?(\d+\.?\d+):?(.+)?", RegexOptions.IgnoreCase);
                    var ch  = nnc.Groups[2].Value;
                    if (string.IsNullOrWhiteSpace(ch))
                    {
                        ch = nnc.Groups[0].Value;
                    }
                    var isNew = _newChapterHelper.IsNew(manga, ch, newDate,
                                                        link, openlink);
                }
                await Task.Delay(500);
            }
        }