async Task DownloadFile(string savePath) { FileUtil.CreateDirectory(savePath); Logger.info("解析完成,开始下载 id:{0} 名字:{1} 歌手:{2} 专辑:{3}", ID, Name, Singer.GetValue(), Album); var fileName = $"{Singer.GetValue()} - {Name}.mp3"; var filePath = Path.Combine(savePath, fileName); foreach (var mp3Url in Mp3Urls) { try { Logger.info($"尝试下载文件 : {mp3Url}"); await HttpUtil.Download(mp3Url, filePath); break; } catch (Exception e) { Logger.info($"下载文件 {mp3Url} 失败 : {e.Message}"); } } if (!File.Exists(filePath)) { throw new Exception("音频文件下载失败"); } Logger.info("下载音频文件完成,文件大小:{1}", fileName, Util.GetMemory(new FileInfo(filePath).Length)); var file = TagLib.File.Create(filePath); file.Tag.Title = Name; file.Tag.Performers = Singer.ToArray(); file.Tag.Album = Album; if (!string.IsNullOrEmpty(CoverUrl)) { var imageName = $"{Singer.GetValue()} - {Name}.jpg"; var imagePath = Path.Combine(savePath, imageName); Logger.info("正在下载封面图片..."); await HttpUtil.Download(CoverUrl, imagePath); ResizeImage(imagePath, 512); file.Tag.Pictures = new TagLib.IPicture[] { new TagLib.Picture(imagePath) }; FileUtil.DeleteFile(imagePath); } file.Save(); Logger.info("写入封面完成 文件名:{0} 文件大小:{1}", fileName, Util.GetMemory(new FileInfo(filePath).Length)); }