Program.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // See https://aka.ms/new-console-template for more information
  2. using PuppeteerSharp;
  3. using StationProbe;
  4. if (args.Length == 0)
  5. {
  6. Console.WriteLine("Use one of 'create','run','list' commands to start this application.");
  7. }
  8. else
  9. {
  10. var command = args[0];
  11. if (command == "create")
  12. {
  13. var name = args[1];
  14. var start = DateTime.Parse(args[2]);
  15. var end = DateTime.Parse(args[3]);
  16. using (var db = new Database())
  17. {
  18. db.AddBatchTask(new BatchTask() { Name = name, Start = start, End = end });
  19. }
  20. }
  21. else if (command == "run")
  22. {
  23. var batchTaskId = int.Parse(args[1]);
  24. var batchTask = new Database().GetBatchTask(batchTaskId);
  25. if (batchTask == null)
  26. {
  27. Console.WriteLine($"No batch task for id:{batchTaskId}, please create batch task before run it.");
  28. }
  29. else
  30. {
  31. Console.WriteLine("Downloading headless browser...");
  32. await new BrowserFetcher().DownloadAsync();
  33. bool error = true;
  34. while (error)
  35. {
  36. try
  37. {
  38. await using (var browser = (Browser)await Puppeteer.LaunchAsync(new LaunchOptions
  39. {
  40. Headless = true
  41. }))
  42. {
  43. await using (var page = await browser.NewPageAsync())
  44. {
  45. await page.SetViewportAsync(new ViewPortOptions
  46. {
  47. Width = 1920,
  48. Height = 1080
  49. });
  50. var superImageTask = new SuperImageTask(batchTask, 15);
  51. await superImageTask.RunAsync(page);
  52. error = false;
  53. }
  54. }
  55. }
  56. catch (Exception ex)
  57. {
  58. Logger.WriteLine($"Run super image task error:{ex}");
  59. error = true;
  60. }
  61. }
  62. }
  63. }
  64. else if (command == "list")
  65. {
  66. using (var db = new Database())
  67. {
  68. Console.WriteLine($"Id \t Name \t Pages \t Exams \t Start \t End ");
  69. var batchTasks = db.GetBatchTasks();
  70. foreach (var batchTask in batchTasks)
  71. {
  72. 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}");
  73. }
  74. }
  75. }
  76. else
  77. {
  78. Console.WriteLine("Use one of 'create','run','list' commands to start this application.");
  79. }
  80. }