monkeymusic 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monkeymusic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Soderlund
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-08 00:00:00.000000000 Z
11
+ date: 2013-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -34,7 +34,7 @@ files:
34
34
  - lib/monkey_music_generate.rb
35
35
  - lib/monkey_music_generate/recommendation_loader.rb
36
36
  - lib/monkey_music_generate/toplist_loader.rb
37
- - lib/monkey_music_generate/generator.rb
37
+ - lib/monkey_music_generate/runner.rb
38
38
  - lib/monkey_music_generate/score_system.rb
39
39
  - lib/monkey_music.rb
40
40
  - lib/monkey_music/level.rb
@@ -45,10 +45,13 @@ files:
45
45
  - lib/monkey_music/units/user.rb
46
46
  - lib/monkey_music/game.rb
47
47
  - lib/monkey_music/runner.rb
48
+ - lib/monkey_music/metadata/track.rb
49
+ - lib/monkey_music/metadata/artist.rb
50
+ - lib/monkey_music/metadata/album.rb
48
51
  - lib/monkey_music/player.rb
49
52
  - lib/monkey_music/level_loader.rb
50
- - lib/monkey_music/ui/browser_ui.rb
51
- - lib/monkey_music/ui/console_ui.rb
53
+ - lib/monkey_music/ui/browser.rb
54
+ - lib/monkey_music/ui/console.rb
52
55
  - levels/testmaze_30.rb
53
56
  - levels/bomberman2.rb
54
57
  - levels/the_last_crusade.rb
@@ -56,6 +59,7 @@ files:
56
59
  - levels/testmaze_10.rb
57
60
  - levels/testlevel_maze.rb
58
61
  - levels/travelling_salesmonkeys.rb
62
+ - levels/demolevel.rb
59
63
  - levels/testmaze_20.rb
60
64
  - bin/monkeymusic-generate
61
65
  - bin/monkeymusic
@@ -1,98 +0,0 @@
1
- require 'optparse'
2
- require 'hallon'
3
-
4
- module MonkeyMusic
5
- class Generator
6
-
7
- def initialize
8
- OptionParser.new do |opts|
9
- opts.banner = 'Usage: monkeymusic-generate [options]'
10
-
11
- opts.on('-g',
12
- '--generate TOPLIST_FILE',
13
- 'Generate a user from a toplist file.') do |user|
14
- @toplist_file = File.join(Dir.getwd, user)
15
- end
16
-
17
- opts.on('-o',
18
- '--out OUT_FILE',
19
- 'The file to dump a generated user to.') do |file|
20
- @out_file = File.join(Dir.getwd, file)
21
- end
22
-
23
- opts.on('-k',
24
- '--app-key KEY',
25
- 'Path to libspotify application key.') do |key|
26
- @spotify_appkey_file = File.join(Dir.getwd, key)
27
- end
28
-
29
- opts.on('-a',
30
- '--account ACCOUNT',
31
- 'Username for a Spotify premium account.') do |account|
32
- @spotify_account = account
33
- end
34
-
35
- opts.on('-w', '--password PASSWORD',
36
- 'Password for a Spotify premium account.') do |password|
37
- @spotify_password = password
38
- end
39
-
40
- opts.on_tail('-h',
41
- '--help',
42
- 'Show this message.') do
43
- puts opts
44
- exit
45
- end
46
- end.parse!
47
- end
48
-
49
- def run
50
- if generate_user?
51
- # Create user
52
- user = User.new
53
- # Connect to libspotify
54
- Hallon.load_timeout = 0
55
- session = Hallon::Session.initialize(IO.read(@spotify_appkey_file))
56
- session.login!(@spotify_account, @spotify_password)
57
- # Load toplists
58
- puts "Loading toplists from #{@toplist_file}..."
59
- toplist_loader = ToplistLoader.new(@toplist_file)
60
- toplist_loader.load_for_user!(user)
61
- # Generate recommendations
62
- puts "Loading recommendations..."
63
- loaded_toplists = toplist_loader.loaded_toplists
64
- recommendation_loader = RecommendationLoader.new(loaded_toplists)
65
- recommendation_loader.load_for_user!(user)
66
- # Disconnect from libspotify
67
- session.logout!
68
- # Evaluate recommendations
69
- puts "Evaluating recommendations..."
70
- score_system = ScoreSystem.new
71
- score_system.evaluate_user_recommendations!(user)
72
- # Dump and print the user
73
- File.open(@out_file, 'w') do |f|
74
- f.write(user.dump)
75
- end
76
- puts "====="
77
- puts "DONE!"
78
- puts "====="
79
- puts "Loaded tracks:"
80
- user.recommendations.group_by(&:multiplier).sort.each do |k,v|
81
- puts "#Multiplier #{k}:\t#{v.length}"
82
- end
83
- exit
84
- end
85
- end
86
-
87
- private
88
-
89
- def generate_user?
90
- (defined? @toplist_file) &&
91
- (defined? @out_file) &&
92
- (defined? @spotify_appkey_file) &&
93
- (defined? @spotify_account) &&
94
- (defined? @spotify_password)
95
- end
96
-
97
- end
98
- end