class MonkeyMusic::Generate::ScoreSystem
Public Instance Methods
evaluate!(track)
click to toggle source
# File lib/monkey_music_generate/score_system.rb, line 11 def evaluate!(track) tier = 0 if @user.toplists[:top_tracks].any? {|t| t.name == track.name } tier = -1 elsif @user.toplists[:disliked_artists].any? {|ar| ar.name == track.artist } tier = -2 else if @user.toplists[:top_albums].any? {|al| al.name == track.album } tier += 1 end if @user.toplists[:top_artists].any? {|ar| ar.name == track.artist } tier += 1 end if @top_decade == decade_of(track.year) tier += 1 end end track.set_value(tier, 4**tier.abs * sign(tier)) end
evaluate_user_recommendations!(user)
click to toggle source
# File lib/monkey_music_generate/score_system.rb, line 4 def evaluate_user_recommendations!(user) @user = user @top_decade = calc_top_decade(user) @user.recommendations.each {|track| evaluate!(track) } puts "The user's top decade is: #{@top_decade}." end
Private Instance Methods
calc_top_decade(user)
click to toggle source
# File lib/monkey_music_generate/score_system.rb, line 33 def calc_top_decade(user) decades = {} (user.toplists[:top_tracks] + user.toplists[:top_albums]).each do |t| decade = decade_of(t.year) decades[decade] ||= 0 decades[decade] += 1 end puts "Decade tally:" puts @decades.to_s (decades.max_by {|k,v| v }).first end
decade_of(year)
click to toggle source
# File lib/monkey_music_generate/score_system.rb, line 45 def decade_of(year) (year % 100) / 10 end
sign(num)
click to toggle source
# File lib/monkey_music_generate/score_system.rb, line 49 def sign(num) num < 0 ? -1 : 1 end