Example #1
0
        public IActionResult New()
        {
            var descriptor = new ArchiveTaskDescriptor();

            descriptor.WorkingDir = @"d:\temp\scraper\pushist1y\";
            _taskRunner.AddTask(descriptor);
            return(Json(descriptor));
        }
Example #2
0
        public DiaryArchiver(ILogger <DiaryArchiver> logger, ArchiveTaskDescriptor descriptor, ScrapeContext context)
        {
            _logger     = logger;
            _descriptor = descriptor;
            var config = new Configuration().WithCss();

            _parser  = new HtmlParser(config);
            _context = context;
        }
Example #3
0
 public IActionResult Post([FromBody] ArchiveTaskDescriptor descriptor)
 {
     if (_taskRunner.TasksView.Any(t => t.IsRunning))
     {
         descriptor.SetError("Операция по архивированию дневника уже выполняется");
         return(Json(descriptor));
     }
     _taskRunner.AddTask(descriptor);
     return(Json(descriptor));
 }
Example #4
0
        public DiaryArchiver GetArchiver(ArchiveTaskDescriptor descriptor)
        {
            var cfg    = ConfigureLog(descriptor.WorkingDir);
            var logger = _serviceProvider.GetRequiredService <ILogger <DiaryArchiver> >();

            try
            {
                EnsureDirs(descriptor);
                var context = GetContext(descriptor);
                descriptor.Archiver = new DiaryArchiver(logger, descriptor, context);
                descriptor.Archiver.WorkFinished += (s, e) =>
                {
                    UnsetLog(cfg);
                };
                return(descriptor.Archiver);
            }
            catch (Exception e)
            {
                UnsetLog(cfg);
                descriptor.SetError(e.Message);
                return(null);
            }
        }
Example #5
0
        private void EnsureDirs(ArchiveTaskDescriptor descriptor)
        {
            var scrapeDbPath = Path.Combine(descriptor.WorkingDir, Constants.DbName);

            if (!File.Exists(scrapeDbPath))
            {
                throw new FileNotFoundException("Не найден файл с БД скачивания", scrapeDbPath);
            }

            var templatePath = Path.Combine(descriptor.WorkingDir, Constants.AccountPagesDir, AccountPagesFileNames.LastPosts);

            if (!File.Exists(templatePath))
            {
                throw new FileNotFoundException("Не найден файл с шаблоном для архивирования", templatePath);
            }

            var archivePath = Path.Combine(descriptor.WorkingDir, Constants.ArchiveDir);

            if (Directory.Exists(archivePath))
            {
                Directory.Delete(archivePath, true);
            }
            Directory.CreateDirectory(archivePath);
        }
Example #6
0
        private ScrapeContext GetContext(ArchiveTaskDescriptor descriptor)
        {
            var scrapeDbPath = Path.Combine(descriptor.WorkingDir, Constants.DbName);

            return(GetContext(scrapeDbPath));
        }