Example #1
0
        public async Task <SearchComicResult> SearchAsync(string keywork, int skip, int take)
        {
            var targetUrl = string.Format(searchUrl, keywork);
            var req       = new RequestSettings
            {
                Address  = targetUrl,
                Host     = "www.dm5.com",
                Referrer = "http://www.dm5.com/"
            };
            var str = await networkAdapter.GetStringAsync(req);

            var html = new HtmlDocument();

            html.LoadHtml(str);
            var box = html.DocumentNode.SelectNodes("//div[@class='box-body']/ul/li/div[@class='mh-item']");
            var sns = new List <ComicSnapshot>();
            var res = new SearchComicResult
            {
                Total   = box.Count,
                Support = true
            };

            foreach (var item in box.Skip(skip).Take(take))
            {
                var converBox      = item.SelectSingleNode("p").Attributes["style"].Value;
                var converBoxLeft  = converBox.IndexOf('(');
                var converBoxRight = converBox.LastIndexOf(')');
                var conver         = converBox.Substring(converBoxLeft + 1, converBoxRight - converBoxLeft - 1);

                var detail   = item.SelectSingleNode("div[@class='mh-item-detali']");
                var titleBox = detail.SelectSingleNode("h2[@class='title']/a");
                var title    = titleBox.InnerText?.Trim();
                var url      = "http://www.dm5.com" + titleBox.Attributes["href"].Value;

                var tipDetail = item.SelectSingleNode("div[@class='mh-tip-wrap']/div[@class='mh-item-tip']/div[@class='mh-item-tip-detali']");
                var desc      = tipDetail.SelectSingleNode("div[@class='desc']");
                var auth      = tipDetail.SelectSingleNode("p[@class='author']/span/a").InnerText;
                var sn        = new ComicSnapshot
                {
                    Author    = auth,
                    Descript  = desc.InnerText,
                    ImageUri  = conver,
                    Name      = title,
                    TargetUrl = targetUrl,
                    Sources   = new ComicSource[]
                    {
                        new ComicSource
                        {
                            TargetUrl = url,
                            Name      = "Dm5"
                        },
                    },
                };
                sns.Add(sn);
            }
            res.Snapshots = sns.ToArray();
            return(res);
        }
Example #2
0
        public async Task <SearchComicResult> SearchAsync(string keywork, int skip, int take)
        {
            var page = 1;

            if (take != 0)
            {
                page = Math.Max(1, skip / take);
            }
            var targetUrl = string.Format(url, keywork, page, take);
            var setting   = new RequestSettings
            {
                Address  = targetUrl,
                Referrer = "https://www.kuaikanmanhua.com/"
            };
            var datas = await networkAdapter.GetStringAsync(setting);

            using (var visit = JsonVisitor.FromString(datas))
            {
                var hit = visit["data"]["hit"].ToArray();
                var res = new SearchComicResult
                {
                    Total   = hit.Count(),
                    Support = true
                };
                var sns = new List <ComicSnapshot>();
                foreach (var item in hit)
                {
                    var conv  = item["vertical_image_url"].ToString();
                    var title = item["title"].ToString();
                    var id    = item["id"].ToString();
                    var desc  = item["description"].ToString();
                    var user  = item["user"]["nickname"].ToString();
                    var sn    = new ComicSnapshot
                    {
                        Author    = user,
                        Descript  = desc,
                        ImageUri  = conv,
                        Name      = title,
                        TargetUrl = targetUrl,
                        Sources   = new ComicSource[]
                        {
                            new ComicSource
                            {
                                TargetUrl = "https://www.kuaikanmanhua.com/web/topic/" + id,
                                Name      = "Kuaikan"
                            }
                        }
                    };
                    sns.Add(sn);
                }
                res.Snapshots = sns.ToArray();
                return(res);
            }
        }
Example #3
0
        public async Task <SearchComicResult> SearchAsync(string keywork, int skip, int take)
        {
            var pageIndex = 1;

            if (take != 0)
            {
                pageIndex = Math.Max(1, skip / take);
            }
            var searchObj = new
            {
                key_word  = keywork,
                page_num  = pageIndex,
                page_size = take
            };
            var searchStr = JsonHelper.Serialize(searchObj);
            var res       = new SearchComicResult
            {
                Support = true
            };

            using (var mem = GetStream())
            {
                var buffer = Encoding.UTF8.GetBytes(searchStr);
                mem.Write(buffer, 0, buffer.Length);
                mem.Seek(0, SeekOrigin.Begin);
                var req = new RequestSettings
                {
                    Address  = searchUrl,
                    Method   = "POST",
                    Host     = UrlHelper.FastGetHost(searchUrl),
                    Referrer = "https://manga.bilibili.com/",
                    Data     = mem,
                    Headers  = headers
                };
                var str = await networkAdapter.GetStringAsync(req);

                using (var visitor = JsonVisitor.FromString(str))
                {
                    var list = visitor["data"]["list"].ToEnumerable();
                    res.Total = list.Count();
                    var sns = new List <ComicSnapshot>();
                    foreach (var item in list)
                    {
                        var conv  = item["vertical_cover"].ToString();
                        var title = item["org_title"].ToString();
                        var id    = item["id"].ToString();
                        var auth  = string.Join(",", item["author_name"].ToEnumerable());
                        var url   = "https://manga.bilibili.com/detail/mc" + id;
                        var sn    = new ComicSnapshot
                        {
                            Author    = auth,
                            ImageUri  = conv,
                            Name      = title,
                            TargetUrl = url,
                            Sources   = new ComicSource[]
                            {
                                new ComicSource
                                {
                                    TargetUrl = url,
                                    Name      = "Bilibili"
                                }
                            }
                        };
                        sns.Add(sn);
                    }
                    res.Snapshots = sns.ToArray();
                }
            }
            return(res);
        }