class AZLyrics

Fetches the lyrics from AZLyrics.com Lyrics are stored accessed via the URL schema www.azlyrics.com/lyrics/ARTIST/SONG.html They are inside /html/body/div[2]/div/div/div, sadly no class to access. There are hidden comments, which need to be removed.

Public Instance Methods

get_lyrics(artist, song, limit = 10) click to toggle source
# File lib/wiki/azlyrics.rb, line 10
def get_lyrics(artist, song, limit = 10)
  artist = artist.delete(' ').gsub(/('|`|´|’|\?|\(|\))/, '').parameterize
  song = song.delete(' ').gsub(/('|`|´|’|\?|\(|\))/, '').gsub(/(?:\(?feat.*\)?)/, '').parameterize

  res = fetch("https://www.azlyrics.com/lyrics/#{artist.downcase}/#{song.downcase}.html", limit)
  return nil unless res.is_a? Net::HTTPSuccess

  lyrics = Nokogiri::HTML(res.body).xpath('/html/body/div[2]/div/div[2]/div[5]')
  prettify_lyrics(lyrics)
end
prettify_lyrics(lyrics) click to toggle source
# File lib/wiki/azlyrics.rb, line 21
def prettify_lyrics(lyrics)
  lyrics.search('.//comment()').remove
  lyrics.inner_html.gsub('<br>', "\r").delete("\n").sub("\r\r", '')
end