public async void AddMusic(Music music) { if (JustRemoved.Any(m => m.Name == music.Name && m.Artist == music.Artist && m.Album == music.Album && m.Duration == music.Duration)) { return; } RecentPage.RecentAdded.Add(music); if (AutoLyrics) { await Task.Run(async() => { string lyrics = await music.GetLyricsAsync(); if (string.IsNullOrEmpty(lyrics)) { await music.SaveLyricsAsync(await LyricsHelper.SearchLyrics(music)); } }); } }
private async void AddLyrics_Click(object sender, RoutedEventArgs e) { ++addLyricsClickCounter; if (addLyricsClickCounter == 2) { MainPage.Instance.ShowLocalizedNotification("ClickAgainToStopAddingLyrics"); return; } else if (addLyricsClickCounter == 3) { addLyricsClickCounter = 0; MainPage.Instance.Loader.ShowIndeterminant("StopAddingLyrics"); return; } string paren = Helper.LocalizeMessage("PostParenthesis"); HyperlinkButton button = (HyperlinkButton)sender; List <Music> skipped = new List <Music>(); int count = MusicLibraryPage.SongCount, counter = 0; foreach (Music music in MusicLibraryPage.AllSongs) { if (addLyricsClickCounter == 0) { Helper.ShowNotification("AddingLyricsStopped"); MainPage.Instance.Loader.Hide(); goto Done; } string lyrics = await music.GetLyricsAsync(); if (string.IsNullOrEmpty(lyrics)) { if (music == MediaHelper.CurrentMusic) { skipped.Add(music); continue; } await Task.Run(async() => { lyrics = await LyricsHelper.SearchLyrics(music); await music.SaveLyricsAsync(lyrics); }); } button.Content = string.Format(paren, addLyricsContent, ++counter + "/" + count); } while (skipped.Count > 0) { foreach (Music music in skipped.ToList()) { if (addLyricsClickCounter == 0) { Helper.ShowNotification("AddingLyricsStopped"); MainPage.Instance.Loader.Hide(); goto Done; } if (music == MediaHelper.CurrentMusic && skipped.Count > 1) { continue; } await Task.Run(async() => { string lyrics = await LyricsHelper.SearchLyrics(music); await music.SaveLyricsAsync(lyrics); }); skipped.Remove(music); button.Content = string.Format(paren, addLyricsContent, ++counter + "/" + count); } } Helper.ShowNotification("SearchLyricsDone"); Done: button.Content = addLyricsContent; addLyricsClickCounter = 0; }