Exemplo n.º 1
0
        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);
            }
        }