コード例 #1
0
    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));
    }