class RSpotify::Artist

@attr [Hash] followers Information about the followers of the artist @attr [Array<String>] genres A list of the genres the artist is associated with. If not yet classified, the array is empty @attr [Array<Hash>] images Images of the artist in various sizes, widest first @attr [String] name The name of the artist @attr [Integer] popularity The popularity of the artist. The value will be between 0 and 100, with 100 being the most popular

Public Class Methods

find(ids) click to toggle source

Returns Artist object(s) with id(s) provided

@param ids [String, Array] Maximum: 50 IDs @return [Artist, Array<Artist>]

@example

artist = RSpotify::Artist.find('7Ln80lUS6He07XvHI8qqHH')
artist.class #=> RSpotify::Artist
artist.name  #=> "Arctic Monkeys"

ids = %w(7Ln80lUS6He07XvHI8qqHH 3dRfiJ2650SZu6GbydcHNb)
artists = RSpotify::Artist.find(ids)
artists.class       #=> Array
artists.first.class #=> RSpotify::Artist
Calls superclass method
# File lib/rspotify/artist.rb, line 24
def self.find(ids)
  super(ids, 'artist')
end
new(options = {}) click to toggle source
Calls superclass method
# File lib/rspotify/artist.rb, line 46
def initialize(options = {})
  @followers  = options['followers']
  @genres     = options['genres']
  @images     = options['images']
  @name       = options['name']
  @popularity = options['popularity']
  @top_tracks = {}

  super(options)
end

Public Instance Methods

albums(limit: 20, offset: 0, **filters) click to toggle source

Returns array of albums from artist

@param limit [Integer] Maximum number of albums to return. Maximum: 50. Default: 20. @param offset [Integer] The index of the first album to return. Use with limit to get the next set of albums. Default: 0. @param album_type [String] Optional. A comma-separated list of keywords that will be used to filter the response. If not supplied, all album types will be returned. Valid values are: album; single; appears_on; compilation. @param market [String] Optional. (synonym: country). An {en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO 3166-1 alpha-2 country code}. Supply this parameter to limit the response to one particular geographical market. If not supplied, results will be returned for all markets. Note if you do not provide this field, you are likely to get duplicate results per album, one for each market in which the album is available. @return [Array<Album>]

@example

artist.albums
artist.albums(album_type: 'single,compilation')
artist.albums(limit: 50, country: 'US')
# File lib/rspotify/artist.rb, line 69
def albums(limit: 20, offset: 0, **filters)
  url = "artists/#{@id}/albums?limit=#{limit}&offset=#{offset}"
  filters.each do |filter_name, filter_value|
    url << "&#{filter_name}=#{filter_value}"
  end

  response = RSpotify.get(url)
  return response if RSpotify.raw_response
  response['items'].map { |i| Album.new i }
end
top_tracks(country) click to toggle source

Returns artist’s 10 top tracks by country.

@param country [Symbol] An {en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO 3166-1 alpha-2 country code} @return [Array<Track>]

@example

top_tracks = artist.top_tracks(:US)
top_tracks.class       #=> Array
top_tracks.size        #=> 10
top_tracks.first.class #=> RSpotify::Track
# File lib/rspotify/artist.rb, line 108
def top_tracks(country)
  return @top_tracks[country] unless @top_tracks[country].nil? || RSpotify.raw_response
  response = RSpotify.get("artists/#{@id}/top-tracks?country=#{country}")

  return response if RSpotify.raw_response
  @top_tracks[country] = response['tracks'].map { |t| Track.new t }
end