From 86e341290e9079da1e1ffa42fa4f1f3f413f24c2 Mon Sep 17 00:00:00 2001 From: real-zony Date: Tue, 7 Feb 2023 22:06:44 +0800 Subject: [PATCH] feat: Added support to output the list of failed songs to a file. --- src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs b/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs index b74d57d..b4b8ea5 100644 --- a/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs +++ b/src/ZonyLrcTools.Common/Lyrics/LyricsDownloader.cs @@ -67,6 +67,7 @@ public class LyricsDownloader : ILyricsDownloader, ISingletonDependency await Task.WhenAll(downloadTasks); await _logger.InfoAsync($"歌词数据下载完成,成功: {needDownloadMusicInfos.Count(m => m.IsSuccessful)} 失败{needDownloadMusicInfos.Count(m => m.IsSuccessful == false)}。"); + await LogFailedSongFilesInfo(Path.Combine(Directory.GetCurrentDirectory(), $"歌词下载失败列表_{DateTime.Now:yyyyMMddHHmmss}.txt"), needDownloadMusicInfos); } private async Task DownloadAndWriteLyricsAsync(ILyricsProvider provider, MusicInfo info) @@ -124,4 +125,17 @@ public class LyricsDownloader : ILyricsDownloader, ISingletonDependency return Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding(_options.Provider.Lyric.Config.FileEncoding), lyrics.GetUtf8Bytes()); } + + private async Task LogFailedSongFilesInfo(string outFilePath, List musicInfos) + { + var failedSongFiles = new StringBuilder(); + failedSongFiles.AppendLine("歌曲名,歌手,路径"); + + foreach (var failedSongFile in musicInfos.Where(m => m.IsSuccessful == false)) + { + failedSongFiles.AppendLine($"{failedSongFile.Name},{failedSongFile.Artist},{failedSongFile.FilePath}"); + } + + await File.WriteAllTextAsync(outFilePath, failedSongFiles.ToString()); + } } \ No newline at end of file