diff --git a/src/ZonyLrcTools.Common/Lyrics/ILyricsDownloader.cs b/src/ZonyLrcTools.Common/Lyrics/ILyricsDownloader.cs
index 45a896c..312b0ae 100644
--- a/src/ZonyLrcTools.Common/Lyrics/ILyricsDownloader.cs
+++ b/src/ZonyLrcTools.Common/Lyrics/ILyricsDownloader.cs
@@ -10,9 +10,11 @@ public interface ILyricsDownloader
///
/// 需要下载的歌词信息。
/// 下载线程/并发量。
+ /// 任务完成之后的回调方法。
/// 任务取消标记。
Task DownloadAsync(List needDownloadMusicInfos,
- int parallelCount = 2,
+ int parallelCount = 1,
+ Func? callback = null,
CancellationToken cancellationToken = default);
///
diff --git a/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs b/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs
index 7516da4..17edeba 100644
--- a/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs
+++ b/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs
@@ -10,6 +10,7 @@ using ZonyLrcTools.Common.Infrastructure.Threading;
namespace ZonyLrcTools.Common.Lyrics;
+///
public class LyricsDownloader : ILyricsDownloader, ISingletonDependency
{
private readonly IEnumerable _lyricsProviders;
@@ -38,6 +39,7 @@ public class LyricsDownloader : ILyricsDownloader, ISingletonDependency
public async Task DownloadAsync(List needDownloadMusicInfos,
int parallelCount = 1,
+ Func? callback = null,
CancellationToken cancellationToken = default)
{
await _logger.InfoAsync("开始下载歌词文件数据...");
@@ -57,12 +59,12 @@ public class LyricsDownloader : ILyricsDownloader, ISingletonDependency
{
await DownloadAndWriteLyricsAsync(lyricsProvider, info);
- if (info.IsSuccessful)
- {
- _logger.LogSuccessful(info);
- return;
- }
+ if (!info.IsSuccessful) continue;
+ _logger.LogSuccessful(info);
+ break;
}
+
+ if (callback != null) await callback(info);
}, cancellationToken), cancellationToken));
await Task.WhenAll(downloadTasks);