Class: MonkeyMusic::Generate::ScoreSystem

Inherits:
Object
  • Object
show all
Defined in:
lib/monkey_music_generate/score_system.rb

Instance Method Summary collapse

Instance Method Details

#evaluate!(track) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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) ⇒ Object



4
5
6
7
8
9
# 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