public IActionResult New() { var descriptor = new ArchiveTaskDescriptor(); descriptor.WorkingDir = @"d:\temp\scraper\pushist1y\"; _taskRunner.AddTask(descriptor); return(Json(descriptor)); }
public DiaryArchiver(ILogger <DiaryArchiver> logger, ArchiveTaskDescriptor descriptor, ScrapeContext context) { _logger = logger; _descriptor = descriptor; var config = new Configuration().WithCss(); _parser = new HtmlParser(config); _context = context; }
public IActionResult Post([FromBody] ArchiveTaskDescriptor descriptor) { if (_taskRunner.TasksView.Any(t => t.IsRunning)) { descriptor.SetError("Операция по архивированию дневника уже выполняется"); return(Json(descriptor)); } _taskRunner.AddTask(descriptor); return(Json(descriptor)); }
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); } }
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); }
private ScrapeContext GetContext(ArchiveTaskDescriptor descriptor) { var scrapeDbPath = Path.Combine(descriptor.WorkingDir, Constants.DbName); return(GetContext(scrapeDbPath)); }