123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- // See https://aka.ms/new-console-template for more information
- using PuppeteerSharp;
- using StationProbe;
- using System.Diagnostics;
- if (args.Length == 0)
- {
- Console.WriteLine("Use one of 'create','run','list' commands to start this application.");
- }
- else
- {
- var command = args[0];
- if (command == "create")
- {
- var name = args[1];
- var start = DateTime.Parse(args[2]);
- var end = DateTime.Parse(args[3]);
- using (var db = new Database())
- {
- db.AddBatchTask(new BatchTask() { Name = name, Start = start, End = end });
- }
- }
- else if (command == "run")
- {
- var batchTaskId = int.Parse(args[1]);
- var batchTask = new Database().GetBatchTask(batchTaskId);
- if (batchTask == null)
- {
- Console.WriteLine($"No batch task for id:{batchTaskId}, please create batch task before run it.");
- }
- else
- {
- Console.WriteLine("Downloading headless browser...");
- await new BrowserFetcher().DownloadAsync();
- bool error = true;
- while (error)
- {
- //Kill all chrome exes before start.
- Logger.WriteLine("Killing existing chromes...");
- var chromes = Process.GetProcessesByName("chrome");
- foreach(var chrome in chromes)
- {
- chrome.Kill();
- }
- Logger.WriteLine($"{chromes.Length} chromes where killed.");
- await Task.Delay(DelayConfig.KillChromeDelay);
- try
- {
- ProbeTask.InitDebugFolder();
- await using var browser = (Browser)await Puppeteer.LaunchAsync(new LaunchOptions
- {
- Headless = false,
- });
- await using var page = await browser.NewPageAsync();
- await page.SetViewportAsync(new ViewPortOptions
- {
- Width = 1920,
- Height = 1080
- });
- var superImageTask = new SuperImageTask(batchTask, 15);
- await superImageTask.RunAsync(page);
- error = false;
- }
- catch (Exception ex)
- {
- Logger.WriteLine($"Run super image task error:{ex}");
- error = true;
- try
- {
- await DingTalk.SendMessageAsync($"Run super image task error:{ex.Message}, will restart in 10s.");
- }
- catch(Exception dx)
- {
- Logger.WriteLine($"Send dingtalk message error:{dx.Message}");
- }
- await Task.Delay(DelayConfig.RetryDelay);
- }
- }
- }
- }
- else if (command == "list")
- {
- using (var db = new Database())
- {
- Console.WriteLine($"Id \t Name \t Pages \t Exams \t Start \t End ");
- var batchTasks = db.GetBatchTasks();
- foreach (var batchTask in batchTasks)
- {
- Console.WriteLine($"{batchTask.Id} \t {batchTask.Name} \t {batchTask.PageCount} \t {batchTask.ExamCount} \t {batchTask.Start:yyyy-MM-dd} \t {batchTask.End:yyyy-MM-dd}");
- }
- }
- }
- else
- {
- Console.WriteLine("Use one of 'create','run','list' commands to start this application.");
- }
- }
|