コード例 #1
0
        protected override async Task <int> OnExecuteAsync(CommandLineApplication app)
        {
            if (Directory.Exists(FilePath))
            {
                _logger.LogInformation("开始扫描文件夹,请稍等...");

                var files = (await _fileScanner.ScanAsync(FilePath, new[] { "*.ncm" }))
                            .SelectMany(f => f.FilePaths)
                            .ToList();

                _logger.LogInformation($"扫描完成,共 {files.Count} 个文件,准备转换。");

                var wrapTask = new WarpTask(4);
                var tasks    = files.Select(path => wrapTask.RunAsync(() => Convert(path)));

                await Task.WhenAll(tasks);
            }
            else if (File.Exists(FilePath))
            {
                await Convert(FilePath);
            }

            _logger.LogInformation("所有文件已经转换完成...");

            return(0);
        }
コード例 #2
0
        private async ValueTask DownloadLyricFilesAsync(ImmutableList <MusicInfo> musicInfos)
        {
            _logger.LogInformation("开始下载歌词文件数据...");

            var downloaderList = GetLyricDownloaderList();
            var warpTask       = new WarpTask(ParallelNumber);
            var warpTaskList   = musicInfos.Select(info =>
                                                   warpTask.RunAsync(() => Task.Run(async() => await DownloadLyricTaskLogicAsync(downloaderList, info))));

            await Task.WhenAll(warpTaskList);

            _logger.LogInformation($"歌词数据下载完成,成功: {musicInfos.Count} 失败{0}。");
        }
コード例 #3
0
        private async ValueTask DownloadAlbumAsync(ImmutableList <MusicInfo> musicInfos)
        {
            _logger.LogInformation("开始下载专辑图像数据...");

            var downloader   = _albumDownloaderList.FirstOrDefault(d => d.DownloaderName == InternalAlbumDownloaderNames.NetEase);
            var warpTask     = new WarpTask(ParallelNumber);
            var warpTaskList = musicInfos.Select(info =>
                                                 warpTask.RunAsync(() => Task.Run(async() => await DownloadAlbumTaskLogicAsync(downloader, info))));

            await Task.WhenAll(warpTaskList);

            _logger.LogInformation($"专辑数据下载完成,成功: {musicInfos.Count(m => m.IsSuccessful)} 失败{musicInfos.Count(m => !m.IsSuccessful)}。");
        }
コード例 #4
0
        private async Task <ImmutableList <MusicInfo> > LoadMusicInfoAsync(IReadOnlyCollection <string> files)
        {
            _logger.LogInformation("开始加载音乐文件的标签信息...");

            var warpTask     = new WarpTask(ParallelNumber);
            var warpTaskList = files.Select(file => warpTask.RunAsync(() => Task.Run(async() => await _tagLoader.LoadTagAsync(file))));
            var result       = (await Task.WhenAll(warpTaskList))
                               .Where(m => m != null)
                               .Where(m => !string.IsNullOrEmpty(m.Name) || !string.IsNullOrEmpty(m.Artist));

            _logger.LogInformation($"已成功加载 {files.Count} 个音乐文件的标签信息。");

            return(result.ToImmutableList());
        }