public void Add(string name, string firstPageApi, string followUpPageApi, CustomPagePara overridePara = null) { Add(new CustomCategory() { Name = name, FirstPageApi = firstPageApi, FollowUpPageApi = followUpPageApi, OverridePagePara = overridePara, }); }
public void AddRange(string first, string follow, Pairs pairs, CustomPagePara para = null) { foreach (var pair in pairs) { var cat = new CustomCategory() { Name = pair.Value, FirstPageApi = first.Replace("{name}", pair.Key), FollowUpPageApi = follow.Replace("{name}", pair.Key) }; if (para != null) { cat.OverridePagePara = para; } Add(cat); } }
public async Task GetDetail(string url, MoeItem father, CustomPagePara pa, bool isFirst, CancellationToken token) { var items = await GetNewItems(url, father, pa, isFirst, token); foreach (var moeItem in items) { father.ChildrenItems.Add(moeItem); } if (isFirst) { var urlinfo = father.ChildrenItems[0]?.DownloadUrlInfo; if (father.ChildrenItems.Count > 0 && urlinfo != null) { father.Urls.Add(urlinfo); } } }
public async Task GetDetailLv2(CustomPagePara pa, MoeItem currentItem, UrlInfo urlinfo, CancellationToken token) { var url = currentItem.DetailUrl; var net = Net.CloneWithCookie(); var html = await net.GetHtmlAsync(url, null, false, token); if (pa.DetailLv2ImageOriginUrl != null) { var originUrl = html.DocumentNode.GetValue(pa.DetailLv2ImageOriginUrl); urlinfo.Url = $"{originUrl}"; } if (pa.DetailLv2ImagePreviewUrl != null) { var prevUrl = html.DocumentNode.GetValue(pa.DetailLv2ImagePreviewUrl); currentItem.Urls.Add(DownloadTypeEnum.Medium, $"{prevUrl}"); } }
public MoeItem GetChildrenItem(HtmlNode img, CustomPagePara pa, MoeItem father) { var newMoeitem = new MoeItem(this, father.Para); if (pa.DetailImageItemOriginUrlFromDetailImagesList != null) { var imgurl = img.GetValue(pa.DetailImageItemOriginUrlFromDetailImagesList); if (imgurl != null) { newMoeitem.Urls.Add(DownloadTypeEnum.Origin, imgurl, referer: pa.DetailImageItemOriginUrlFromDetailImagesList.Referer); } } if (pa.DetailImageItemThumbnailUrlFromDetailImagesList != null) { var imgurl = img.GetValue(pa.DetailImageItemThumbnailUrlFromDetailImagesList); if (imgurl != null) { newMoeitem.Urls.Add(DownloadTypeEnum.Thumbnail, imgurl, referer: pa.DetailImageItemThumbnailUrlFromDetailImagesList.Referer); } } if (pa.DetailImageItemDetailUrlFromDetailImagesList != null) { var imgurl = img.GetValue(pa.DetailImageItemDetailUrlFromDetailImagesList); if (imgurl != null) { newMoeitem.DetailUrl = $"{imgurl}"; var url = new UrlInfo(DownloadTypeEnum.Origin, "", resolveUrlFunc: (item, url, token) => GetDetailLv2(pa, item, url, token)); newMoeitem.Urls.Add(url); } } return(newMoeitem); }
public async Task <MoeItems> GetNewItems(string url, MoeItem father, CustomPagePara pa, bool isFirst, CancellationToken token) { var newItems = new MoeItems(); var net = Net.CloneWithCookie(); var html = await net.GetHtmlAsync(url, token : token, showSearchMessage : false); if (html == null) { return(newItems); } var root = html.DocumentNode; var imgOrImgs = root.GetValue(pa.DetailImagesList); if (pa.DetailImagesList.IsMultiValues) { var imgs = (HtmlNodeCollection)imgOrImgs; if (imgs?.Count > 0) { foreach (var img in imgs) { var newm = GetChildrenItem(img, pa, father); newItems.Add(newm); } } else { return(newItems); } } else { var img = (HtmlNode)imgOrImgs; var newm = GetChildrenItem(img, pa, father); newItems.Add(newm); } var currentPageIndex = root.GetValue(pa.DetailCurrentPageIndex); var currentIndex = $"{currentPageIndex}".ToInt(); var nextpageIndex = $"{root.GetValue(pa.DetailNextPageIndex)}".ToInt(); //var maxPageIndex = $"{root.GetValue(pa.DetailMaxPageIndex)}".ToInt(); if (isFirst) { var imageCount = $"{root.GetValue(pa.DetailImagesCount)}".ToInt(); if (imageCount != 0) { father.ChildrenItemsCount = imageCount; } } if (nextpageIndex == currentIndex + 1) { var nextUrl = root.GetValue(pa.DetailNextPageUrl); var last = newItems.LastOrDefault(); if (last != null) { last.IsResolveAndDownloadNextItem = true; last.GetNextItemsTaskFunc += async t => await GetNewItems(nextUrl, father, pa, false, t); } } return(newItems); }