private void getLyricsURL(string Artist, string Title, LyricsCallback Callback) { if (lyrics.ContainsKey(Artist + Title)) { string s = lyrics[Artist + Title]; if (s == Net.FAILED_TOKEN) { if (StringUtil.HasParentheticalChars(Title)) { getLyricsURL(Artist, StringUtil.RemoveParentheticalChars(Title), Callback); } else { Callback(Net.FAILED_TOKEN); } } else { Callback(s); } } else { getLyricsImpl(Artist, Title, Callback); } }
private void getLyricsImpl(string Artist, string Title, LyricsCallback Callback) { if (Artist.Length > 0 && Title.Length > 0) { string url = LyricWiki.URL + String.Format("{0}:{1}", HttpUtility.UrlEncode(Artist.Replace(' ', '_')), HttpUtility.UrlEncode(Title.Replace(' ', '_'))); string result = Net.Get(url).Trim(); if (result.Length == 0) { result = Net.FAILED_TOKEN; } else if (result.StartsWith("not found", StringComparison.InvariantCultureIgnoreCase)) { result = Net.FAILED_TOKEN; } if (result != Net.FAILED_TOKEN) { lyrics.Add(Artist + Title, result); } if (result == Net.FAILED_TOKEN) { if (StringUtil.HasParentheticalChars(Title)) { getLyricsURL(Artist, StringUtil.RemoveParentheticalChars(Title), Callback); } else { Callback(Net.FAILED_TOKEN); } } else { string s = extractLyrics(result); if (s == String.Empty) { s = Net.FAILED_TOKEN; } Callback(s); } } else { Callback(Net.FAILED_TOKEN); } }
public void GetLyrics(Track Track, LyricsCallback Callback) { getLyricsURL(Track.Artist, Track.Title, Callback); }