/// <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> /// 获取单个画师,只能由DoGetThread执行 /// </summary> /// <param name="listUrl">画师作品列表页</param> public void GetSingle(object objParame) { try { if (!mut.IsContinue) { return; } //因为循环里没有做修改,所有可以放外面 var parame = (RequestParameEntity)objParame; form.BeginInvoke(new Action(() => { form.RtxtSuccess.Text = ""; })); if (isSingle) { form.Invoke(new Action(() => { form.TxtSavePath.Text = parame.SavePath; })); } EachListPage(parame.ListUrl, DownContentType.SinglePainter, new Action <string>(itemUrl => { if (!mut.IsContinue) { return; } itemUrl = HtmlHelp.NeedHost(parame.ListUrl, itemUrl); var ri = new RequestItemParameEntity() { ItemUrl = itemUrl, SavePath = parame.SavePath }; if (isSingle) { GetWorksItem(ri); } else { while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue) { Thread.Sleep(1000); } } })); } catch (Exception ex) { AddErrorMsg(ex.Message + "\r\n"); HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt"); } finally { if (!isSingle) { mut.RemoveGThread(); } } }
/// <summary> /// 下载搜索 /// Url 必须是完整的地址,只能由mainThread执行 /// </summary> /// <param name="objParame"></param> public void GetSearch(object objParame) { try { var parame = (RequestParameEntity)objParame; EachListPage(parame.ListUrl, DownContentType.GetSearch, new Action <string>(itemUrl => { if (!mut.IsContinue) { return; } itemUrl = "/member_illust.php?mode=medium&illust_id=" + itemUrl; itemUrl = HtmlHelp.NeedHost(parame.ListUrl, itemUrl); //都下载同一个地方,不用克隆 var ri = new RequestItemParameEntity() { ItemUrl = itemUrl, SavePath = parame.SavePath }; if (isSingle) { GetWorksItem(ri); } else { while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue) { Thread.Sleep(1000); } } })); } catch (Exception ex) { AddErrorMsg(ex.Message + "\r\n"); HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt"); } finally { if (mainThread != null && mainThread.IsAlive) { mainThread.Abort(); } } }
/// <summary> /// 下载相关作品 /// </summary> /// <param name="objParame"></param> public void GetRelatedWorks(object objParame) { try { var parame = (RequestParameEntity)objParame; var ids = GetRelatedWorksIds(parame); if (ids != null && ids.Count > 0) { foreach (var id in ids) { var itemUrl = "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=" + id; var ri = new RequestItemParameEntity() { ItemUrl = itemUrl, SavePath = parame.SavePath }; if (isSingle) { GetWorksItem(ri); } else { while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue) { Thread.Sleep(1000); } } } } } catch (Exception ex) { AddErrorMsg(ex.Message + "\r\n"); HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt"); } finally { //if (mainThread != null && mainThread.IsAlive) //{ // mainThread.Abort(); //} } }
/// <summary> /// 获取单个作品 /// </summary> /// <param name="objParame"></param> public void GetSingleWorks(object objParame) { try { if (!mut.IsContinue) { return; } //因为循环里没有做修改,所有可以放外面 var parame = (RequestParameEntity)objParame; form.BeginInvoke(new Action(() => { form.RtxtSuccess.Text = ""; })); var ri = new RequestItemParameEntity() { ItemUrl = parame.ListUrl, SavePath = parame.SavePath }; GetWorksItem(ri); if (parame.DownRelatedWorks) { GetRelatedWorks(objParame); } } catch (Exception ex) { AddErrorMsg(ex.Message + "\r\n"); HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt"); } finally { if (mainThread != null && mainThread.IsAlive) { mainThread.Abort(); } } }