Exemplo n.º 1
0
 public List <Chapter> GetChapterList(int NovelId)
 {
     using (CrawelNovelDbContext context = new CrawelNovelDbContext())
     {
         return(context.Chapter.Where(c => c.NoteBookId.Equals(NovelId)).ToList());
     }
 }
Exemplo n.º 2
0
        private void UpdateNovel(Catalog log, HtmlDocument doc)
        {
            col = null;
            using (CrawelNovelDbContext context = new CrawelNovelDbContext())
            {
                string MaxUrl = string.Empty;
                if (rbBQG.Checked)
                {
                    MaxUrl = context.Chapter.Where(c => c.NoteBookId.Equals(log.Id)).Max(c => c.ChapterUrl);
                }
                else
                {
                    MaxUrl = context.Chapter.Where(c => c.NoteBookId.Equals(log.Id)).Min(c => c.ChapterUrl);
                }

                var chap = context.Chapter.FirstOrDefault(f => f.ChapterUrl.Equals(MaxUrl));
                col = doc.DocumentNode.SelectNodes("//dd");
                if (rbJPXS.Checked)
                {
                    col.RemoveAt(0);
                    col.RemoveAt(col.Count - 1);
                }
                ProgressCount = col.Count;
                CataUrl       = log.Url;
                CataId        = log.Id;
                this.backgroundWorker1.RunWorkerAsync(chap);  //运行backgroundWorker组件
            }



            ProgressForm form = new ProgressForm(this.backgroundWorker1);  //显示进度条窗体

            form.ShowDialog(this);
        }
Exemplo n.º 3
0
 public Catalog GetCataLogByName(string NovelName)
 {
     using (CrawelNovelDbContext context = new CrawelNovelDbContext())
     {
         return(context.Catalog.FirstOrDefault(c => c.NoteName.Equals(NovelName)));
     }
 }
Exemplo n.º 4
0
 public void SaveChapData(List <Chapter> chaps)
 {
     using (CrawelNovelDbContext context = new CrawelNovelDbContext())
     {
         context.Chapter.AddRange(chaps);
         context.SaveChanges();
     }
 }
Exemplo n.º 5
0
 public void UpdateCatalog(Catalog cata)
 {
     using (CrawelNovelDbContext context = new CrawelNovelDbContext())
     {
         context.Catalog.Attach(cata);
         context.Entry(cata).Property("UpdateTime").IsModified = true;
         context.SaveChanges();
     }
 }
Exemplo n.º 6
0
        public int SaveCatalog(Catalog cata)
        {
            int returnId = 0;

            using (CrawelNovelDbContext context = new CrawelNovelDbContext())
            {
                context.Catalog.Add(cata);
                context.SaveChanges();
                returnId = cata.Id;
            }
            return(returnId);
        }
Exemplo n.º 7
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            this.backgroundWorker1.DoWork             -= backgroundWorker1_DoWork;
            this.backgroundWorker1.RunWorkerCompleted -= backgroundWorker1_RunWorkerCompleted;
            this.backgroundWorker1.DoWork             += backgroundWorker1_UpdateDoWork;
            this.backgroundWorker1.RunWorkerCompleted += this.backgroundWorker1_UpdateRunWorkerCompleted;


            List <Catalog> catas = null;

            using (CrawelNovelDbContext context = new CrawelNovelDbContext())
            {
                catas = context.Catalog.ToList();
            }
            HtmlDocument doc = new HtmlDocument();

            foreach (var cata in catas)
            {
                if (cata.Url.Contains("jpxs"))
                {
                    rbJPXS.Checked = true;
                }
                else
                {
                    rbBQG.Checked = true;
                }

                string htmlContent = GetContent(cata.Url);
                doc.LoadHtml(htmlContent);
                DateTime LastTimeDt;
                if (rbBQG.Checked)
                {
                    HtmlNode navInfo  = doc.GetElementbyId("info");
                    HtmlNode navInfo1 = doc.DocumentNode.SelectSingleNode(navInfo.XPath + "/p[3]");
                    string   LastTime = navInfo1.InnerText.Replace("&nbsp;", "").Replace("最后更新", "").Substring(1);
                    LastTimeDt = DateTime.Parse(LastTime);
                }
                else
                {
                    HtmlNode navInfo    = doc.GetElementbyId("info");
                    HtmlNode navInfo1   = doc.DocumentNode.SelectSingleNode(navInfo.XPath + "/p[4]");
                    int      StartIndex = navInfo1.InnerText.IndexOf('[');
                    int      LastIndex  = navInfo1.InnerText.IndexOf(']');
                    string   LastTime   = navInfo1.InnerText.Substring(StartIndex, LastIndex - StartIndex).Replace("&nbsp;", "").Replace("最后更新", "").Substring(1);
                    LastTimeDt = DateTime.Parse(LastTime);
                }

                if (cata.UpdateTime.HasValue)
                {
                    if (LastTimeDt < cata.UpdateTime.Value)
                    {
                        continue;
                    }
                }
                else
                {
                    if (LastTimeDt < cata.CreateTime)
                    {
                        continue;
                    }
                }

                UpdateNovel(cata, doc);
                cata.UpdateTime = DateTime.Now;
                UpdateCatalog(cata);
            }
        }