Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override string Execute()
        {
            var jobs = WebCrawlerConfig.GetConfigData();

            var results = new List <CrawlerResults>();

            foreach (var job in jobs)
            {
                if (job.RunIntervalType == WebCrawlJobConfig.ScheduleIntervalType.Inactive)
                {
                    continue;
                }

                bool runJob = false;

                if (job.LastRunDate == null)
                {
                    runJob = true;
                }
                else
                {
                    switch (job.RunIntervalType)
                    {
                    case WebCrawlJobConfig.ScheduleIntervalType.Day:
                        if (job.LastRunDate.Value.AddDays(job.RunInterval) <= DateTime.Now)
                        {
                            runJob = true;
                        }
                        break;

                    case WebCrawlJobConfig.ScheduleIntervalType.Week:
                        if (job.LastRunDate.Value.AddDays(job.RunInterval * 7) <= DateTime.Now)
                        {
                            runJob = true;
                        }
                        break;

                    case WebCrawlJobConfig.ScheduleIntervalType.Month:
                        if (job.LastRunDate.Value.AddMonths(job.RunInterval) <= DateTime.Now)
                        {
                            runJob = true;
                        }
                        break;
                    }
                }

                if (runJob)
                {
                    var result = RunCrawler(job);
                    results.Add(result);

                    job.LastRunDate = DateTime.Now;

                    WebCrawlerConfig.SaveConfigData(job);
                }
            }

            if (results.Any())
            {
                var str = new StringBuilder();

                foreach (var result in results)
                {
                    str.Append(string.Format("Web Crawl (Source ID: {0}) Finished. {1} pages crawled. Total Errors {2}. Duration ({3:00}:{4:00}:{5:00}).\n", result.SourceId, result.TotalCnt, result.ErrorCnt, result.Duration.Hours, result.Duration.Minutes, result.Duration.Seconds));
                }

                return(str.ToString());
            }

            return("");
        }
 public List <WebCrawlJobConfig> GetWebCrawlJobs()
 {
     return(WebCrawlerConfig.GetConfigData());
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="webCrawlJob"></param>
        /// <returns></returns>
        public ActionResult Save(WebCrawlJobConfig webCrawlJob)
        {
            WebCrawlerConfig.SaveConfigData(webCrawlJob);

            return(RedirectToAction("Index", "WebCrawlerAdmin"));
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public ActionResult Delete(int sourceid)
        {
            WebCrawlerConfig.DeleteConfigData(sourceid);

            return(RedirectToAction("Index", "WebCrawlerAdmin"));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sourceId"></param>
        /// <returns></returns>
        public ActionResult Update(int sourceId)
        {
            var job = WebCrawlerConfig.GetJobConfigData(sourceId);

            return(View("~/modules/MissionSearchEpi/UI/Views/WebCrawlerAdmin/add.cshtml", job));
        }