Beispiel #1
0
        public void SetNewLyric(Lyrics lyric, MetaString metaArtist, MetaString metaTitle)
        {
            StopWork();

            _lyricList = lyric?.LyricSentencs ?? new List <Sentence>();
            _lyricList.Insert(0,
                              new Sentence($"{metaArtist.ToUnicodeString()} - {metaTitle.ToUnicodeString()}", 0));
        }
Beispiel #2
0
        /// <summary>
        /// Call lyric provider to check lyric
        /// </summary>
        public void SetLyricSynchronously()
        {
            if (!LyricWindow.IsVisible)
            {
                return;
            }

            Task.Run(async() =>
            {
                if (_searchLyricTask?.IsTaskBusy() == true)
                {
                    await Task.WhenAny(_searchLyricTask);
                }

                _searchLyricTask = Task.Run(async() =>
                {
                    if (!_controller.IsPlayerReady)
                    {
                        return;
                    }

                    var lyricInst         = Service.Get <LyricsInst>();
                    var meta              = _controller.PlayList.CurrentInfo.OsuFile.Metadata;
                    MetaString metaArtist = meta.ArtistMeta;
                    MetaString metaTitle  = meta.TitleMeta;
                    var lyric             = await lyricInst.LyricProvider.GetLyricAsync(metaArtist.ToUnicodeString(),
                                                                                        metaTitle.ToUnicodeString(), (int)_controller.Player.Duration.TotalMilliseconds);
                    LyricWindow.SetNewLyric(lyric, metaArtist, metaTitle);
                    LyricWindow.StartWork();
                });
            });
        }