Exemplo n.º 1
0
        public async Task <string> GetLyrics(string track, string artist)
        {
            var response = await this.lastFmClient.Track.GetInfoAsync(track, artist);

            if (response.Success || !ReferenceEquals(response.Content, null))
            {
                var page = new HtmlWeb().Load(response.Content.Url.OriginalString)
                           .DocumentNode
                           .Descendants("a")
                           .Where(d => d.Attributes.Contains("class") && d.Attributes["class"].Value.Equals("external-link"));
                var htmlNodes = page.ToList();
                if (htmlNodes.Any())
                {
                    page = new HtmlWeb().Load(htmlNodes.First()
                                              .GetAttributeValue("href", "empty"))
                           .DocumentNode.Descendants("p")
                           .Where(d => d.Attributes.Contains("class") &&
                                  d.Attributes["class"].Value.Contains("verse"));
                    var lyricsCollection = page.Select(x => x.InnerText);
                    var res = lyricsCollection.Aggregate("", (current, row) => current + "\n" + row).Replace("\"", "\'");
                    return(res);
                }
            }

            return("");
        }