class MonkeyMusic::Generate::RecommendationLoader

Public Class Methods

new(loaded_toplists, load_factor = 10) click to toggle source
# File lib/monkey_music_generate/recommendation_loader.rb, line 6
def initialize(loaded_toplists, load_factor = 10)
  @loaded_toplists = loaded_toplists
  @load_factor = load_factor
end

Public Instance Methods

load_for_user!(user) click to toggle source
# File lib/monkey_music_generate/recommendation_loader.rb, line 11
def load_for_user!(user)
  @user = user
  @loaded_toplists.each do |name, list|
    puts "Loading #{name}..."
    list[:items].each { |item| load_recommendations_for!(list[:type], item) }
  end
end

Private Instance Methods

load_recommendations_for!(type, item) click to toggle source
# File lib/monkey_music_generate/recommendation_loader.rb, line 21
def load_recommendations_for!(type, item)
  if type == :tracks
    @user.recommendations << parse_track(item)            
  else
    browse = case type
               when :artists then item.browse(:no_albums)
               when :albums then item.browse
             end
    puts "Browsing #{item.name}..."
    browse.load unless browse.loaded?
    collection = case type
                   when :artists then browse.top_hits
                   when :albums then browse.tracks
                 end
    collection.first(@load_factor).each do |track|
      @user.recommendations << parse_track(track)            
    end
  end
end
parse_track(track) click to toggle source
# File lib/monkey_music_generate/recommendation_loader.rb, line 41
def parse_track(track)
  album = track.album.load
  artist = track.artist.load
  MonkeyMusic::Metadata::Track.new :uri => track.to_link.to_str,
                                   :name => track.name,
                                   :artist => artist.name,
                                   :album => album.name,
                                   :year => album.release_year
end