Example #1
0
 public void Add(string name, string firstPageApi, string followUpPageApi, CustomPagePara overridePara = null)
 {
     Add(new CustomCategory()
     {
         Name             = name,
         FirstPageApi     = firstPageApi,
         FollowUpPageApi  = followUpPageApi,
         OverridePagePara = overridePara,
     });
 }
Example #2
0
 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);
     }
 }
Example #3
0
    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);
            }
        }
    }
Example #4
0
    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}");
        }
    }
Example #5
0
    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);
    }
Example #6
0
    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);
    }