mirror of
https://github.com/real-zony/ZonyLrcToolsX.git
synced 2025-07-01 20:23:22 +00:00
feat: When downloading lyrics, a callback was added to facilitate UI updates.
This commit is contained in:
parent
7fa595a71b
commit
d00d735bf0
@ -10,9 +10,11 @@ public interface ILyricsDownloader
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="needDownloadMusicInfos">需要下载的歌词信息。</param>
|
/// <param name="needDownloadMusicInfos">需要下载的歌词信息。</param>
|
||||||
/// <param name="parallelCount">下载线程/并发量。</param>
|
/// <param name="parallelCount">下载线程/并发量。</param>
|
||||||
|
/// <param name="callback">任务完成之后的回调方法。</param>
|
||||||
/// <param name="cancellationToken">任务取消标记。</param>
|
/// <param name="cancellationToken">任务取消标记。</param>
|
||||||
Task DownloadAsync(List<MusicInfo> needDownloadMusicInfos,
|
Task DownloadAsync(List<MusicInfo> needDownloadMusicInfos,
|
||||||
int parallelCount = 2,
|
int parallelCount = 1,
|
||||||
|
Func<MusicInfo, Task>? callback = null,
|
||||||
CancellationToken cancellationToken = default);
|
CancellationToken cancellationToken = default);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -10,6 +10,7 @@ using ZonyLrcTools.Common.Infrastructure.Threading;
|
|||||||
|
|
||||||
namespace ZonyLrcTools.Common.Lyrics;
|
namespace ZonyLrcTools.Common.Lyrics;
|
||||||
|
|
||||||
|
/// <inheritdoc cref="ZonyLrcTools.Common.Lyrics.ILyricsDownloader" />
|
||||||
public class LyricsDownloader : ILyricsDownloader, ISingletonDependency
|
public class LyricsDownloader : ILyricsDownloader, ISingletonDependency
|
||||||
{
|
{
|
||||||
private readonly IEnumerable<ILyricsProvider> _lyricsProviders;
|
private readonly IEnumerable<ILyricsProvider> _lyricsProviders;
|
||||||
@ -38,6 +39,7 @@ public class LyricsDownloader : ILyricsDownloader, ISingletonDependency
|
|||||||
|
|
||||||
public async Task DownloadAsync(List<MusicInfo> needDownloadMusicInfos,
|
public async Task DownloadAsync(List<MusicInfo> needDownloadMusicInfos,
|
||||||
int parallelCount = 1,
|
int parallelCount = 1,
|
||||||
|
Func<MusicInfo, Task>? callback = null,
|
||||||
CancellationToken cancellationToken = default)
|
CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
await _logger.InfoAsync("开始下载歌词文件数据...");
|
await _logger.InfoAsync("开始下载歌词文件数据...");
|
||||||
@ -57,12 +59,12 @@ public class LyricsDownloader : ILyricsDownloader, ISingletonDependency
|
|||||||
{
|
{
|
||||||
await DownloadAndWriteLyricsAsync(lyricsProvider, info);
|
await DownloadAndWriteLyricsAsync(lyricsProvider, info);
|
||||||
|
|
||||||
if (info.IsSuccessful)
|
if (!info.IsSuccessful) continue;
|
||||||
{
|
|
||||||
_logger.LogSuccessful(info);
|
_logger.LogSuccessful(info);
|
||||||
return;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (callback != null) await callback(info);
|
||||||
}, cancellationToken), cancellationToken));
|
}, cancellationToken), cancellationToken));
|
||||||
|
|
||||||
await Task.WhenAll(downloadTasks);
|
await Task.WhenAll(downloadTasks);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user