Sha256: ec491000367795589d522f7a064d6666e241d9fb4be57025bd011ad8dee772a7

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

require 'open-uri'
require 'nokogiri'

module LyricFind
  class API
    def initialize search_api_key, display_api_key
      @search_key = search_api_key
      @display_key = display_api_key
    end

    def get_lyrics_by_song_name artist, song_name
      query_url = URI.escape "http://api.lyricfind.com/search.do?apikey=#{@search_key}&reqtype=default&searchtype=track&artist=#{artist}&track=#{song_name}"
      response = open(query_url).read
      doc = Nokogiri::HTML(response)
      doc.encoding = 'utf-8'

      return nil if !(check_success doc, 100)
      tracks = doc.xpath('//tracks')[0]['totalresults'].to_i
      return nil if tracks == 0

      track = doc.xpath('//tracks/track')[0]['amg']

      query_url = URI.escape "http://api.lyricfind.com/lyric.do?apikey=#{@display_key}&reqtype=default&trackid=amg:#{track}"

      response = open(query_url).read
      doc = Nokogiri::HTML(response)
      doc.encoding = 'utf-8'

      return nil if !(check_success doc, 101)

      lyrics = doc.xpath('//lyrics')
      lyrics[0].content
    end

    def check_success doc, code
      response = doc.xpath('//response')
      response[0]['code'].to_i == code
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
LyricFind-0.1.2 lib/lyricfind/get_lyrics_by_song_name.rb
LyricFind-0.1.1 lib/lyricfind/get_lyrics_by_song_name.rb