예제 #1
0
 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();
 }
예제 #2
0
        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());
        }