/// <summary> /// 获取网络章节内容 /// </summary> /// <param name="chapter"></param> /// <returns></returns> public string GetWebChapterContent(Chapter chapter) { var objNVB = NVHelper.NVBaseObject(chapter.OriginLink); //获取对应处理类 if (objNVB != null) { return(objNVB.GetChapterContent(new NVChapter { Title = chapter.Name, Link = chapter.OriginLink, Sort = chapter.Sort })); } return(string.Empty); }
/// <summary> /// 重新获取 /// </summary> /// <param name="novelId"></param> /// <returns></returns> public bool ReGetWebsiteNovel(string novelId) { var novel = Repository.FindSingle(x => x.Id == novelId); if (novel == null) { return(false); } var objNVB = NVHelper.NVBaseObject(novel.OriginLink); //获取对应处理类 if (objNVB == null) { return(false); } var listNVChapter = objNVB.GetList(novel.OriginLink);//获取章节信息 if (listNVChapter.Count() > 0) { var listChapter = new List <Chapter>(); foreach (var c in listNVChapter.OrderBy(x => x.Sort)) { var newChapter = new Chapter { NovelId = novel.Id, NovelName = novel.Name, Name = c.Title, OriginLink = c.Link, Sort = c.Sort, State = 0, ChapterStartPosition = 0, ChapterEndPosition = 0 }; listChapter.Add(newChapter); } //保存章节信息到 以novelId为表名的章节表中 _chapterManager.AddRandChapter(novel.Id, listChapter); return(true); } return(false); }
public bool Search(User user, string url) { if (!string.IsNullOrEmpty(url)) { var count = Repository.Find(x => x.OriginLink == url).Count(); if (count > 0) { return(false); } var objNVB = NVHelper.NVBaseObject(url); if (objNVB == null) { return(false); } ThreadPool.QueueUserWorkItem(x => { var websiteNovelApp = AutofacExt.GetFromFac <WebsiteNovelApp>(); var websiteApp = AutofacExt.GetFromFac <WebsiteApp>(); var webSearchHelper = new WebSearchHelper(); webSearchHelper.SpecRegStr = objNVB.GetSpecRegex(); webSearchHelper.GetNovelInfo += objNVB.GetNovelInfo; webSearchHelper.Search(url); string guid = Guid.NewGuid().ToString(); websiteApp.Repository.Add(new Website { Id = guid, Name = "新的搜索任务", OriginLink = url, CreatorId = user.Id }); var websiteId = guid; ThreadPool.QueueUserWorkItem(m => { CheckWebsiteState(websiteId, websiteApp, ref webSearchHelper); }); try { websiteApp.UpdateState(websiteId, 1); while (true) { if (webSearchHelper.IsAllDone) { websiteApp.UpdateState(websiteId, 2); break; } Thread.Sleep(100); if (webSearchHelper.WebSiteBookInfoQueue.Count > 0) { NVNovel nVNovel = (NVNovel)webSearchHelper.WebSiteBookInfoQueue.Dequeue(); if (nVNovel != null) { nVNovel.WebsiteId = websiteId; var websiteNovel = Mapper.Map <WebsiteNovel>(nVNovel); websiteNovelApp.AddWebsitNovel(websiteId, websiteNovel); } } } } catch (Exception ex) { websiteApp.UpdateState(websiteId, -1); //throw ex; } }, objNVB); return(true); } return(false); }
public bool ReSearch(string websiteId) { var website = Repository.FindSingle(x => x.Id == websiteId); if (website != null) { var objNVB = NVHelper.NVBaseObject(website.OriginLink); if (objNVB == null) { return(false); } ThreadPool.QueueUserWorkItem(x => { var websiteNovelApp = AutofacExt.GetFromFac <WebsiteNovelApp>(); var websiteApp = AutofacExt.GetFromFac <WebsiteApp>(); var webSearchHelper = new WebSearchHelper(); webSearchHelper.SpecRegStr = objNVB.GetSpecRegex(); webSearchHelper.GetNovelInfo += objNVB.GetNovelInfo; webSearchHelper.Search(website.OriginLink); var guid = website.Id; ThreadPool.QueueUserWorkItem(m => { CheckWebsiteState(websiteId, websiteApp, ref webSearchHelper); }); try { websiteApp.UpdateState(guid, 1); while (true) { if (webSearchHelper.IsAllDone) { websiteApp.UpdateState(guid, 2); break; } Thread.Sleep(100); if (webSearchHelper.WebSiteBookInfoQueue.Count > 0) { NVNovel nVNovel = (NVNovel)webSearchHelper.WebSiteBookInfoQueue.Dequeue(); if (nVNovel != null) { nVNovel.WebsiteId = guid; var websiteNovel = Mapper.Map <WebsiteNovel>(nVNovel); websiteNovelApp.AddWebsitNovel(guid, websiteNovel); } } } } catch (Exception ex) { websiteApp.UpdateState(guid, -1); //throw ex; } }); return(true); } return(false); }
public bool GetWebsiteNovel(User user, string url, string novelName) { if (Repository.Find(x => x.OriginLink == url).Count() > 0) { return(true); } var tableListUrl = url; var objNVB = NVHelper.NVBaseObject(tableListUrl); //获取对应处理类 if (objNVB == null) { return(false); } var newNovelId = Guid.NewGuid().ToString(); var newNovel = new Novel { Id = newNovelId, Name = string.IsNullOrEmpty(novelName) ? DateTime.Now.ToString("yyyyMMddHHmmss") : novelName, PhysicalPath = @"books\" + newNovelId, OriginLink = tableListUrl, FromType = 1 }; //newNovel.PhysicalPath = Path.Combine(AppContext.BaseDirectory, @"books\" + newNovel.Id); Repository.Add(newNovel); //添加到Novel表 _userNovelApp.AddRelationShip(user.Id, user.Name, newNovel.Id, newNovel.Name); //添加用户与novel关系 var listNVChapter = objNVB.GetList(tableListUrl); //获取章节信息 if (listNVChapter.Count() > 0) { var chapterName = objNVB.GetNovelName(); //更改novel状态为获取中 Repository.Update(x => x.Id == newNovel.Id, n => new Novel { State = 1, Name = chapterName }); var listChapter = new List <Chapter>(); foreach (var c in listNVChapter.OrderBy(x => x.Sort)) { var newChapter = new Chapter { NovelId = newNovel.Id, NovelName = newNovel.Name, Name = c.Title, OriginLink = c.Link, Sort = c.Sort, State = 0, ChapterStartPosition = 0, ChapterEndPosition = 0 }; listChapter.Add(newChapter); } //保存章节信息到 以novelId为表名的章节表中 _chapterManager.AddRandChapter(newNovel.Id, listChapter); //线程获取章节数据保存到本地 } else { //更改novel状态为获取中 Repository.Update(x => x.Id == newNovel.Id, n => new Novel { State = -2, }); } return(false); }