class RubyFm::Album
Attributes
artist[R]
id[R]
images[R]
mbid[R]
name[R]
streamable[R]
tracks[R]
url[R]
Public Class Methods
new(attributes, tracks)
click to toggle source
# File lib/ruby_fm/album.rb, line 8 def initialize(attributes, tracks) @name = attributes['name'] @artist = attributes['artist'] @mbid = attributes['mbid'] @id = attributes['id'] @url = attributes['url'] @streamable = attributes['streamable'] @images = attributes['image'].map do |image| image['#text'] end @tracks = tracks end
search(phrase)
click to toggle source
# File lib/ruby_fm/album.rb, line 22 def search(phrase) res = connection.get('/2.0/', { method: 'album.search', album: phrase, api_key: RubyFm.api_key, format: 'json' }) parsed_results = JSON.parse(res.body) if parsed_results['results'] && parsed_results['results']['albummatches'] album_results = [parsed_results['results']['albummatches']['album']].flatten album_results.map do |album_attributes| tracks = get_tracks(album_attributes['name'],album_attributes['artist']) new(album_attributes, tracks) end else [] end end
Protected Class Methods
connection()
click to toggle source
# File lib/ruby_fm/album.rb, line 61 def connection conn ||= Faraday.new(:url => 'http://ws.audioscrobbler.com') do |faraday| faraday.request :url_encoded # form-encode POST params faraday.adapter Faraday.default_adapter # make requests with Net::HTTP end end
get_tracks(name, artist)
click to toggle source
# File lib/ruby_fm/album.rb, line 42 def get_tracks(name, artist) res = connection.get('/2.0/', { method: 'album.getInfo', album: name, artist: artist, api_key: RubyFm.api_key, format: 'json' }) parsed_results = JSON.parse(res.body) if parsed_results['album'] && parsed_results['album']['tracks']['track'] tracks_results = [parsed_results['album']['tracks']['track']].flatten tracks_results.map do |track_attributes| Track.new(track_attributes) end else [] end end