/// <summary> /// 并行下载歌词任务 /// </summary> /// <param name="down">插件</param> /// <param name="list">待下载列表</param> private async void parallelDownLoadLryic(Dictionary <int, MusicInfoModel> list, IPlug_Lrc down) { setBottomStatusText(StatusHeadEnum.NORMAL, "正在下载歌词..."); progress_DownLoad.Maximum = list.Count; progress_DownLoad.Value = 0; await Task.Run(() => { disEnabledButton(); Parallel.ForEach(list, new ParallelOptions() { MaxDegreeOfParallelism = SettingManager.SetValue.DownloadThreadNum }, (item) => { string _path = Path.GetDirectoryName(item.Value.Path) + @"\" + Path.GetFileNameWithoutExtension(item.Value.Path) + ".lrc"; if (SettingManager.SetValue.IsIgnoreExitsFile && File.Exists(_path)) { listView_MusicInfos.Items[item.Key].SubItems[6].Text = "略过"; } else { byte[] _lrcData; if (down.DownLoad(item.Value.Artist, item.Value.SongName, out _lrcData, SettingManager.SetValue.IsDownTranslate)) { string _lrcPath = null; #region > 输出方式 < if (SettingManager.SetValue.UserDirectory.Equals(string.Empty)) // 同目录 { _lrcPath = Path.GetDirectoryName(item.Value.Path) + @"\" + Path.GetFileNameWithoutExtension(item.Value.Path) + ".lrc"; } else // 自定义目录 { _lrcPath = Path.Combine(SettingManager.SetValue.UserDirectory, Path.GetFileNameWithoutExtension(item.Value.Path) + ".lrc"); } #endregion EncodingConverter _convert = getEncodingConvert(); _lrcData = _convert.ConvertBytes(_lrcData, SettingManager.SetValue.EncodingName); FileUtils.WriteFile(_lrcPath, _lrcData); listView_MusicInfos.Items[item.Key].SubItems[6].Text = "成功"; } else { listView_MusicInfos.Items[item.Key].SubItems[6].Text = "失败"; } } progress_DownLoad.Value += 1; }); setBottomStatusText(StatusHeadEnum.SUCCESS, "歌词下载完成!"); enabledButton(); }); }
/// <summary> /// 转换文本编码 /// </summary> /// <returns></returns> private byte[] encodingConvert(byte[] sourceBytes) { EncodingConverter _convert = new EncodingConverter(); switch (SettingManager.SetValue.EncodingName) { case "utf-8 bom": _convert = new EncodingUTF8_Bom(); break; case "ANSI": _convert = new EncodingANSI(); break; default: _convert = new EncodingConverter(); break; } return(_convert.ConvertBytes(sourceBytes, SettingManager.SetValue.EncodingName)); }