mr_eko 0.3.1 → 0.3.2

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.
data/README.md CHANGED
@@ -4,8 +4,11 @@ MrEko analyzes your music and lets you ask him in-depth questions about it. He
4
4
 
5
5
  Example:
6
6
  --------
7
- # Scan all your music
8
- mreko scan ~/Music/*.mp3
7
+ # Scan a directory, recursively:
8
+ mreko scan ~/Music/iTunes
9
+
10
+ # Scan a set of files
11
+ mreko scan jakob-semaphore.mp3 pelican-drought.mp3
9
12
 
10
13
  # Output a PLS playlist of fast, minor-key music
11
14
  mreko playlist --tempo '>120' --mode minor --format pls > rainy_day_suicidal_playlist.pls
@@ -16,7 +19,7 @@ Example:
16
19
  Requirements:
17
20
  -------------
18
21
  * [ffmpeg](http://www.ffmpeg.org/download.htmlr) in your path.
19
- * an [Echonest API token](http://developer.echonest.com/) which goes here: ~/.mr_eko/echonest_api.key
22
+ * an [Echonest API token](http://developer.echonest.com/) which goes here: ~/.mreko/echonest_api.key
20
23
 
21
24
  Notes:
22
25
  ------
data/bin/mreko CHANGED
@@ -13,10 +13,11 @@ def parse_options
13
13
  options = { :format => :text }
14
14
 
15
15
  OptionParser.new do |opts|
16
- opts.banner = "Usage: #{$0} [options]"
16
+ opts.banner = "Usage: #{$0} scan|playlist [options]"
17
17
 
18
18
  opts.separator ""
19
- opts.separator "Specific options:"
19
+ opts.separator "Playlist options:"
20
+
20
21
  opts.on("-p", "--preset NAME", String, "Select a preset. Options are (#{MrEko::Presets::FACTORY.keys.join(', ')})") do |preset|
21
22
  options[:preset] = preset
22
23
  end
@@ -65,7 +66,6 @@ def parse_options
65
66
  end
66
67
 
67
68
  opts.separator ""
68
- opts.separator "Common options:"
69
69
 
70
70
  # No argument, shows at tail. This will print an options summary.
71
71
  opts.on_tail("-h", "--help", "Show this message") do
@@ -84,7 +84,17 @@ options = parse_options
84
84
  case ARGV[0]
85
85
  when 'scan'
86
86
  ARGV.shift
87
- ARGV.each do |file|
87
+
88
+ files = ARGV.map do |arg|
89
+ if File.directory?(arg)
90
+ Dir.glob("#{arg}/**/*.mp3")
91
+ else
92
+ File.expand_path arg
93
+ end
94
+ end.flatten
95
+
96
+ puts "Found #{files.length} MP3s to process..."
97
+ files.each do |file|
88
98
  MrEko::Song.create_from_file!(file, options)
89
99
  end
90
100
  when 'playlist'
data/lib/mr_eko/song.rb CHANGED
@@ -196,8 +196,8 @@ class MrEko::Song < Sequel::Model
196
196
  File.expand_path File.join(MrEko::FINGERPRINTS_DIR, "#{md5}.json")
197
197
  end
198
198
 
199
- # @param [ID3Lib::Tag]
200
- # @return [ID3Lib::Tag]
199
+ # @param [Array<ID3Lib::Tag>]
200
+ # @return [Array<ID3Lib::Tag>]
201
201
  def self.clean_tags(tags)
202
202
  ic = Iconv.new("utf-8", "ucs-2")
203
203
 
data/lib/mr_eko.rb CHANGED
@@ -19,7 +19,7 @@ EKO_ENV = ENV['EKO_ENV'] || 'development'
19
19
  Sequel.default_timezone = :utc
20
20
 
21
21
  module MrEko
22
- VERSION = '0.3.1'
22
+ VERSION = '0.3.2'
23
23
  USER_DIR = File.join(ENV['HOME'], ".mreko")
24
24
  FINGERPRINTS_DIR = File.join(USER_DIR, 'fingerprints')
25
25
  LOG_DIR = File.join(USER_DIR, 'logs')
data/mr_eko.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'mr_eko'
16
- s.version = '0.3.1'
16
+ s.version = '0.3.2'
17
17
  s.date = '2011-11-30'
18
18
  s.rubyforge_project = 'mr_eko'
19
19
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_eko
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 1
10
- version: 0.3.1
9
+ - 2
10
+ version: 0.3.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ed Hickey