private static async Task LoginIfNeedAsync(Arguments arguments) { if (string.IsNullOrEmpty(arguments.Account) || string.IsNullOrEmpty(arguments.Password)) { FastConsole.WriteLine("登录可避免出现大部分API错误!!!当前是免登录状态,若软件出错请尝试登录!!!", ConsoleColor.Green); FastConsole.WriteLine("强烈建议登录使用软件:\"NLyric.exe -d C:\\Music -a [email protected] -p 123456\"", ConsoleColor.Green); } else { FastConsole.WriteLine("登录中...", ConsoleColor.Green); if (await _cloudMusic.LoginAsync(arguments.Account, arguments.Password)) { FastConsole.WriteLine("登录成功!", ConsoleColor.Green); } else { FastConsole.WriteError("登录失败,输入任意键以免登录模式运行或重新运行尝试再次登录!"); try { FastConsole.ReadKey(true); } catch { } } } FastConsole.WriteNewLine(); }
private static AudioInfo[] LoadAllAudioInfos(string directory) { return(Directory.EnumerateFiles(directory, "*", SearchOption.AllDirectories).Where(audioPath => { string lrcPath; lrcPath = Path.ChangeExtension(audioPath, ".lrc"); return !CanSkip(audioPath, lrcPath); }).AsParallel().AsOrdered().Select(audioPath => { TagLib.File audioFile; Tag tag; AudioInfo audioInfo; TrackInfo trackInfo; int trackId; audioFile = null; audioInfo = new AudioInfo { Path = audioPath }; try { audioFile = TagLib.File.Create(audioPath); tag = audioFile.Tag; if (Album.HasAlbumInfo(tag)) { audioInfo.Album = new Album(tag, true); } audioInfo.Track = new Track(tag); } catch (Exception ex) { FastConsole.WriteError("无效音频文件!"); FastConsole.WriteException(ex); return null; } finally { audioFile?.Dispose(); } trackInfo = _database.TrackInfos.Match(audioInfo.Album, audioInfo.Track); if (!(trackInfo is null)) { audioInfo.TrackInfo = trackInfo; return audioInfo; } // 尝试从数据库获取歌曲 if (The163KeyHelper.TryGetTrackId(tag, out trackId)) { audioInfo.TrackInfo = new TrackInfo(audioInfo.Track, audioInfo.Album, trackId); return audioInfo; } // 尝试从163Key获取ID return audioInfo; }).Where(t => !(t is null)).ToArray()); }