public void SaveASV2(object obj) { MyYunfileDelegate d = new MyYunfileDelegate(UpdateUI); Pobject p = (Pobject)obj; string[] arrList = p.alist.ToArray(); //文件的地址列表 string strL = string.Empty; string strUID = string.Empty; //用户的ID string strFID = string.Empty; //文件的ID string strFileName = string.Empty; //文件的名字 string PostData = string.Empty; //设置cookie string strCookies = p.scookie; //转换为Cookie对象 CookieCollection cookies = VTS.Common.NetHelper.CreateCookies(strCookies, p.scookiepath, p.scookieDomain); Random rm = new Random(); int i = 0; foreach (string item in arrList) { #region 1.阶段一:获取文件的ID和用户的ID strL = item.Split('#')[0]; strFileName = item.Split('#')[1]; string[] atmep = PostClass.GetUIDFid(strL.Trim(), cookies); if (atmep == null) { continue; } strUID = atmep[0]; strFID = atmep[1]; this.Invoke(d, "\r\n正在处理用户ID:" + strUID + ",文件ID:" + strFID + "\r\n"); #endregion //让当前的线程歇一会 if (thSaveV2 != null) { this.Invoke(d, "第一次休息中...\n"); thSaveV2.Join(rm.Next(400, 900)); } #region 2.阶段二:转存用户的文件信息 //1.获得Post数据 PostData = PostClass.CreatePOSTData(strFID, strUID, "/Share", strFileName); i++; //开始转存 this.Invoke(d, "\r\n开始转存第" + i + "个文件...\r\n"); string strCode = VTS.Common.NetHelper.HttpPost(strPOSTUrl, "", PostData, cookies, 1); this.Invoke(d, "\r\n成功啦!返回代码:" + strCode + "\r\n"); this.Invoke(d, "\n********************分割线*******************\n"); #endregion //让当前的线程歇一会 if (thSaveV2 != null) { this.Invoke(d, "第二次在休息中...\n"); thSaveV2.Join(rm.Next(300, 900)); } } this.Invoke(d, "已经全部搞定了...\n"); }
//开始进行苦逼的操作了 public void DoWork() { //当文件处理过多的时候容易中断退出,建议使用小个文件进行转存 MyYunfileDelegate d = new MyYunfileDelegate(UpdateUI); //需要同过一组源代码解析其中的一组 ULR---文件名集合 this.Invoke(d, "开始工作了了...\n先看看有没有文件夹\r\n"); List <string> afolder; //List<string> afile = PostClass.GetURLFile("http://page1.yunfile.com/ls/lmpbjs1988/", out afolder); List <string> afile = PostClass.GetURLFile(this.txtFileURLList.Text.Trim(), out afolder); #region 文件夹地址扫描 if (afolder.Count > 0) { this.Invoke(d, "\r\n扫描到了" + afolder.Count + "个文件夹地址...\r\n"); foreach (string item in afolder) { this.Invoke(d, item + "\n"); } } else { this.Invoke(d, "\r\n哈哈!你的运气太差了哦!一个也没有找到...\r\n"); } #endregion #region 文件列表转存 if (afile.Count > 0) { this.Invoke(d, "\r\n共计扫描到" + afile.Count + "个文件地址...\r\n"); //思路分析:两种参数输入 文件的地址列表 用户的地址【蜘蛛算法 不停的便利获得下一级别 不推荐使用速度较慢】 this.Invoke(d, "注意!开始进行转存了...\r\n"); //设置cookie string strCookies = this.txtCookie.Text.Trim(); CookieCollection cookies = VTS.Common.NetHelper.CreateCookies(strCookies, "/", "www.yunfile.com"); this.Invoke(d, "Cookie已经设置完毕,正在进行努力登陆.....\r\n"); string strUID = string.Empty; //用户的ID string strFID = string.Empty; //文件的ID string strFileName = string.Empty; //文件的名字 string[] arrList = afile.ToArray(); //文件的地址列表 Random rm = new Random(); int i = 0; foreach (string item in arrList) { #region 1.阶段一:获取文件的ID和用户的ID string strL = item.Split('#')[0]; //文件的名字 strFileName = item.Split('#')[1]; this.Invoke(d, "开始获取文件的ID和用户ID...\r\n"); string[] atmep = PostClass.GetUIDFid(strL.Trim(), cookies); //this.Invoke(d, "获取完毕...\r\n进入到转存阶段\r\n**************************************************\r\n"); if (atmep != null) { strUID = atmep[0]; strFID = atmep[1]; } else { this.Invoke(d, "该文件有问题,转存失败了\r\n"); continue; } this.Invoke(d, "正在处理第" + i + "个文件,用户ID:" + strUID + ",文件ID:" + strFID + "\r\n"); #endregion //让当前的线程歇一会 if (yunfilepath != null) { //this.Invoke(d, "第一次休息中...\n"); yunfilepath.Join(rm.Next(200, 2000)); } #region 2.阶段二:转存用户的文件信息 //获得Post数据 string PostData = PostClass.CreatePOSTData(strFID, strUID, "/Share", strFileName); i++; //开始转存 string strCode = VTS.Common.NetHelper.HttpPost(strPOSTUrl, "", PostData, cookies, 1); this.Invoke(d, "成功啦!返回代码:" + strCode + "\n"); this.Invoke(d, "\n********************分割线*******************\n"); #endregion //让当前的线程歇一会 if (yunfilepath != null) { //this.Invoke(d, "第二次在休息中...\n"); yunfilepath.Join(rm.Next(300, 1000)); } } this.Invoke(d, "已经全部搞定了...\n"); } #endregion }