mr_eko 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -26,6 +26,7 @@ Requirements:
26
26
  -------------
27
27
  * [ffmpeg](http://www.ffmpeg.org/download.html) in your path.
28
28
  * an [Echonest API token](http://developer.echonest.com/) which goes here: ~/.mreko/echonest_api.key
29
+ * [Ruby 1.9.3](http://ruby-lang.org) or above
29
30
 
30
31
  TimedPlaylists:
31
32
  ---------------
data/lib/mr_eko/song.rb CHANGED
@@ -109,7 +109,7 @@ class MrEko::Song < Sequel::Model
109
109
  song.md5 = md5
110
110
  song.tempo = analysis.audio_summary.tempo
111
111
  song.duration = analysis.audio_summary.duration
112
- song.key = analysis.audio_summary.key
112
+ song.key = analysis.audio_summary['key']
113
113
  song.mode = analysis.audio_summary.mode
114
114
  song.loudness = analysis.audio_summary.loudness
115
115
  song.time_signature = analysis.audio_summary.time_signature
@@ -221,15 +221,15 @@ class MrEko::Song < Sequel::Model
221
221
  # @param [Array<ID3Lib::Tag>]
222
222
  # @return [Array<ID3Lib::Tag>]
223
223
  def self.clean_tags(tags)
224
- ic = Iconv.new("utf-8", "ucs-2")
225
224
 
226
- REQUIRED_ID3_TAGS.each do |rt|
227
- decoded = begin
228
- ic.iconv(tags.send(rt))
229
- rescue Iconv::InvalidCharacter, Iconv::IllegalSequence
230
- tags.send(rt)
225
+ (REQUIRED_ID3_TAGS + [:album]).each do |rt|
226
+ tag = tags.send(rt).to_s
227
+ if tag.encoding != Encoding::UTF_8
228
+ decoded = tag.encode
229
+ else
230
+ decoded = tag
231
231
  end
232
- decoded = nil if decoded.blank?
232
+
233
233
  tags.send("#{rt}=", decoded)
234
234
  end
235
235
 
data/lib/mr_eko.rb CHANGED
@@ -1,3 +1,5 @@
1
+ Encoding.default_internal = Encoding::UTF_8
2
+
1
3
  require "rubygems"
2
4
  require "bundler"
3
5
 
@@ -10,7 +12,7 @@ require "digest/md5"
10
12
  require 'id3lib'
11
13
  require "echonest"
12
14
  begin
13
- require 'ruby-debug'
15
+ require 'debugger'
14
16
  rescue LoadError
15
17
  end
16
18
 
@@ -20,7 +22,7 @@ EKO_ENV = ENV['EKO_ENV'] || 'development'
20
22
  Sequel.default_timezone = :utc
21
23
 
22
24
  module MrEko
23
- VERSION = '0.5.3'
25
+ VERSION = '0.6.0'
24
26
  USER_DIR = File.join(ENV['HOME'], ".mreko")
25
27
  FINGERPRINTS_DIR = File.join(USER_DIR, 'fingerprints')
26
28
  LOG_DIR = File.join(USER_DIR, 'logs')
data/mr_eko.gemspec CHANGED
@@ -13,8 +13,8 @@ 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.5.3'
17
- s.date = '2013-08-09'
16
+ s.version = '0.6.0'
17
+ s.date = '2013-08-13'
18
18
  s.rubyforge_project = 'mr_eko'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -58,7 +58,7 @@ Gem::Specification.new do |s|
58
58
  s.add_development_dependency('mocha', "= 0.9.8")
59
59
  s.add_development_dependency('shoulda', "~> 2.11")
60
60
  s.add_development_dependency('test-unit', "~> 2.1")
61
- s.add_development_dependency("ruby-debug")
61
+ s.add_development_dependency("debugger")
62
62
  s.add_development_dependency("autotest")
63
63
  s.add_development_dependency("pry")
64
64
  s.add_development_dependency("yard")
data/test/song_test.rb CHANGED
@@ -104,8 +104,8 @@ class SongTest < Test::Unit::TestCase
104
104
 
105
105
  setup do
106
106
  @mp3 = MrEko::Song.parse_id3_tags(TAGLESS_MP3)
107
- assert_nil @mp3.artist
108
- assert_nil @mp3.title
107
+ assert_empty @mp3.artist
108
+ assert_empty @mp3.title
109
109
  end
110
110
 
111
111
  should 'return nil' do
@@ -132,10 +132,10 @@ class SongTest < Test::Unit::TestCase
132
132
  end
133
133
  end
134
134
 
135
- context 'cleaning funky ID3 tags' do
135
+ context 'cleaning encoded ID3 tags' do
136
136
 
137
- should "decode iTunes' crazy tags" do
138
- dm = Iconv.conv('UTF-16', 'LATIN1', 'Dead Meadow')
137
+ should "decode iTunes' encoded tags" do
138
+ dm = 'Dead Meadow'.encode(Encoding::UCS_2BE, Encoding::UTF_8)
139
139
  tag_stub = OpenStruct.new(:artist => dm, :title => 'Good Moaning')
140
140
  ID3Lib::Tag.expects(:new).once.returns(tag_stub)
141
141
  parsed_tags = MrEko::Song.parse_id3_tags(TEST_MP3)
@@ -143,11 +143,14 @@ class SongTest < Test::Unit::TestCase
143
143
  assert_equal "Dead Meadow", parsed_tags.artist
144
144
  end
145
145
 
146
- should "not blow up when there isn't any crazy encoding" do
146
+ should "not alter the tags when they aren't encoded" do
147
147
  tag_stub = OpenStruct.new(:artist => 'Dead Meadow', :title => 'Good Moaning')
148
148
  ID3Lib::Tag.expects(:new).once.returns(tag_stub)
149
149
 
150
- assert_nothing_raised{ MrEko::Song.parse_id3_tags(TEST_MP3) }
150
+ parsed = MrEko::Song.parse_id3_tags(TEST_MP3)
151
+
152
+ assert_equal parsed.artist, 'Dead Meadow'
153
+ assert_equal parsed.title, 'Good Moaning'
151
154
  end
152
155
  end
153
156
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_eko
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-09 00:00:00.000000000 Z
12
+ date: 2013-08-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sequel
@@ -172,7 +172,7 @@ dependencies:
172
172
  - !ruby/object:Gem::Version
173
173
  version: '2.1'
174
174
  - !ruby/object:Gem::Dependency
175
- name: ruby-debug
175
+ name: debugger
176
176
  requirement: !ruby/object:Gem::Requirement
177
177
  none: false
178
178
  requirements:
@@ -298,6 +298,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
298
298
  - - ! '>='
299
299
  - !ruby/object:Gem::Version
300
300
  version: '0'
301
+ segments:
302
+ - 0
303
+ hash: 2527726127632796201
301
304
  required_rubygems_version: !ruby/object:Gem::Requirement
302
305
  none: false
303
306
  requirements: