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); }
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); } }
public async Task <ComicEntity> GetChaptersAsync(string targetUrl) { try { var url = EntityAddress + targetUrl; var str = await networkAdapter.GetStringAsync(new RequestSettings { Address = url }); if (string.IsNullOrEmpty(str)) { return(null); } var truck = JsonSerializer.Deserialize <AnfComicEntityTruck>(str, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); if (truck is null) { return(null); } return(new ComicEntity { Chapters = truck.Chapters, ComicUrl = truck.ComicUrl, Descript = truck.Descript, ImageUrl = truck.ImageUrl, Name = truck.Name, }); } catch (Exception) { return(null); } }
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); }