public async ValueTask Execute(ScanLibraryTask scanLibraryTask) { try { scanLibraryTask.Update(TaskStatus.Executing); var library = LibraryManager.GetLibrary(scanLibraryTask.LibraryId); if (library == null) { await SendExceptionMessage(scanLibraryTask.Name, "该库不存在"); return; } var mangaPaths = LibraryManager.CheckUpdates(scanLibraryTask.LibraryId); var scraper = PluginManager.MetadataScrapers.FirstOrDefault(it => it.Name == library.ScraperName); foreach (var mangaPath in mangaPaths) { scanLibraryTask.Children.Add(new ScanMangaTask(mangaPath, mangaPath.Name, scraper, scanLibraryTask)); } scanLibraryTask.Counter = new AtomicCounter(0, scanLibraryTask.Children.Count); await SendSuccessMessage(scanLibraryTask.Name, mangaPaths.Count(it => it.IsNewItem), mangaPaths.Count(it => !it.IsNewItem)); scanLibraryTask.Update(TaskStatus.Running); } catch (Exception e) { Logger.Warn(e); scanLibraryTask.Update(TaskStatus.Fail); await SendExceptionMessage(scanLibraryTask.Name, e.Message); } }