Exemple #1
0
        /// <summary>
        /// 根据Type获取自己的收藏,只能由mainThread执行
        /// </summary>
        /// <param name="reParame"></param>
        /// <param name="type"></param>
        private void GetCollectionByType(RequestParameEntity reParame, string type, string url)
        {
            getType = type;

            var listUrl = url + type;

            EachListPage(listUrl, DownContentType.OwnCollection, new Action <string>(itemUrl =>
            {
                if (!mut.IsContinue)
                {
                    return;
                }

                itemUrl = HtmlHelp.NeedHost(listUrl, itemUrl);

                var ri = new RequestItemParameEntity()
                {
                    ItemUrl = itemUrl, SavePath = reParame.SavePath
                };

                if (isSingle)
                {
                    GetWorksItem(ri);
                }
                else
                {
                    while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue)
                    {
                        Thread.Sleep(1000);
                    }
                }
            }));
        }
Exemple #2
0
        /// <summary>
        /// 获取某个作品的相关作品
        /// </summary>
        /// <param name="parame"></param>
        /// <returns></returns>
        public List <string> GetRelatedWorksIds(RequestParameEntity parame)
        {
            var itemUrl = parame.ListUrl;
            var id      = parame.ID;
            var result  = new List <string>();

            //获取相关作品请求参数
            var limitUrl = $"https://www.pixiv.net/ajax/illust/{id}/recommend/init?limit=18";

            var limitHtml = DownHelp.GetHtmlString(limitUrl, Encoding.UTF8, 5);

            if (limitHtml == "")
            {
                AddErrorMsg(string.Format("获取URL:{0} 的html失败!\r\n", limitUrl));
                return(null);
            }
            AddSuccessMsg(string.Format("获取URL:{0} 的html成功!\r\n", limitUrl));

            var firstIds = GetRelatedWorks(limitHtml, RegexHelp.Other.GetFirstIds);

            result.AddRange(firstIds);

            var regNext = new Regex(RegexHelp.Other.GetNextIdsParent, RegexOptions.Singleline);
            var mNext   = regNext.Match(limitHtml);

            if (mNext != null && mNext.Groups["Main"].Value != "")
            {
                var secondIds = GetRelatedWorks(mNext.Groups["Main"].Value, RegexHelp.Other.GetNextIds);
                result.AddRange(secondIds);
            }

            return(result);
        }
 public override void Start(RequestParameEntity parame)
 {
     base.Mut        = new MultThreadPool(1, 1);
     base.MainThread = new Thread(this.GetCollection);
     base.MainThread.IsBackground = true;
     base.MainThread.Start(parame);
 }
 public override void Start(RequestParameEntity parame, int getCount, int downCount, int sleep)
 {
     base.Mut        = new MultThreadPool(getCount, downCount);
     base.MainThread = new Thread(this.GetAllFollow);
     base.MainThread.IsBackground = true;
     base.MainThread.Start(parame);
 }
 public override void Start(RequestParameEntity parame)
 {
     base.Mut        = new MultThreadPool(1, 1);
     base.MainThread = new Thread(this.GetSearch);
     base.MainThread.IsBackground = true;
     //base.Mut.DoGetAction(parame, this.GetSearch);
     base.MainThread.Start(parame);
 }
Exemple #6
0
        /// <summary>
        /// 根据type获取关注的画师,只能由mainThread执行
        /// </summary>
        /// <param name="reqParame"></param>
        /// <param name="type"></param>
        private void GetAllFollowByType(RequestParameEntity reqParame, string type)
        {
            getType = type;

            string paListUrl = string.Format("https://www.pixiv.net/bookmark.php?type=user&rest={0}&p=1", type);

            EachListPage(paListUrl, DownContentType.AllFollow, new Action <string>(id =>
            {
                if (!mut.IsContinue)
                {
                    return;
                }

                //因为是引用类型,所以要复制
                var parame = (RequestParameEntity)reqParame.Clone();

                //因为这里是遍历集合,所以不能只用SavePath
                parame.SavePath = parame.ParentPath + "/" + id;
                parame.SavePath = parame.SavePath.Replace("\\", "/").Replace("//", "/");
                var listUrl     = GetListUrlByID(id, parame.SavePath);
                if (listUrl != "")
                {
                    //列表Url从关注列表Url变为某个画师的作品列表Url
                    parame.ListUrl = listUrl;

                    if (isSingle)
                    {
                        GetSingle(parame);
                    }
                    else
                    {
                        while (!mut.DoGetAction(parame, GetSingle) && mut.IsContinue)
                        {
                            Thread.Sleep(1000);
                        }
                    }
                }
            }));
        }
 /// <summary>
 /// 开始任务方法
 /// </summary>
 /// <param name="objParame"></param>
 public abstract void Start(RequestParameEntity parame);
 /// <summary>
 /// 开始任务方法
 /// </summary>
 /// <param name="objParame"></param>
 public abstract void Start(RequestParameEntity parame, int getCount, int downCount, int sleep);
 public override void Start(RequestParameEntity parame, int getCount, int downCount, int sleep)
 {
     base.Mut   = new MultThreadPool(1, downCount);
     base.Sleep = sleep;
     base.Mut.DoGetAction(parame, base.GetSingle);
 }
 /// <summary>
 /// 开始任务方法
 /// </summary>
 /// <param name="objParame"></param>
 public virtual void Start(RequestParameEntity parame)
 {
 }
 /// <summary>
 /// 开始任务方法
 /// </summary>
 /// <param name="objParame"></param>
 public virtual void Start(RequestParameEntity parame, int getCount, int downCount, int sleep)
 {
 }
 public void Start(RequestParameEntity parame)
 {
     _object.Start(parame);
 }
 public void Start(RequestParameEntity parame, int getCount, int downCount, int sleep)
 {
     _object.Start(parame, getCount, downCount, sleep);
 }