/// <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); } } })); }
/// <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); }
/// <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); }