id3lib-ruby 0.3.1-mswin32 → 0.4.0-mswin32

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,5 +1,11 @@
1
1
  = id3lib-ruby changes
2
2
 
3
+ === 0.4.0 (r41)
4
+
5
+ * Fixed Unicode problems (bug 4768).
6
+ * Renamed ID3Lib::API methods to be more like the id3lib method names.
7
+ For example, the GetType() method is now named get_type instead of type.
8
+
3
9
  === 0.3.1 (r32)
4
10
 
5
11
  * Added check and messages for -lstdc++ and -lz to extconf.rb.
data/Rakefile CHANGED
@@ -10,15 +10,22 @@ require 'rake/testtask'
10
10
  require 'rake/rdoctask'
11
11
 
12
12
 
13
- PKG_VERSION = '0.3.1'
13
+ PKG_VERSION = '0.4.0'
14
14
 
15
- PKG_COMMON = FileList[
15
+ FILES_COMMON = FileList[
16
16
  'lib/**/*.rb',
17
17
  'test/test_*.rb',
18
18
  'test/data/*.mp3',
19
19
  'test/data/cover.jpg',
20
20
  'Rakefile',
21
- 'setup.rb'
21
+ '*.rb'
22
+ ]
23
+
24
+ FILES_EXT = FileList[
25
+ 'ext/*.rb',
26
+ 'ext/*.cxx',
27
+ 'ext/*.i',
28
+ 'ext/Rakefile'
22
29
  ]
23
30
 
24
31
 
@@ -42,7 +49,7 @@ Rake::TestTask.new do |t|
42
49
  end
43
50
 
44
51
 
45
- RDOC_OPTS = ['--line-numbers', '--main', 'README']
52
+ RDOC_OPTS = ['--inline-source', '--line-numbers', '--main', 'README']
46
53
 
47
54
  desc "Generate RDOC documentation."
48
55
  Rake::RDocTask.new :rdoc do |rdoc|
@@ -63,7 +70,7 @@ if defined? Gem
63
70
  'id3lib-ruby provides a Ruby interface to the id3lib C++ library for ' +
64
71
  'easily editing ID3 tags (v1 and v2) like with pyid3lib.'
65
72
  s.requirements << 'id3lib C++ library'
66
- s.files = PKG_COMMON + FileList['ext/extconf.rb', 'ext/*.cxx']
73
+ s.files = FILES_COMMON + FILES_EXT
67
74
  s.extensions = ['ext/extconf.rb']
68
75
  s.test_files = FileList['test/test_*.rb']
69
76
  s.has_rdoc = true
@@ -81,7 +88,7 @@ if defined? Gem
81
88
  end
82
89
 
83
90
  spec_mswin32 = spec.clone
84
- spec_mswin32.files = PKG_COMMON + FileList['ext/mswin32/id3lib_api.so']
91
+ spec_mswin32.files = FILES_COMMON + FileList['ext/mswin32/id3lib_api.so']
85
92
  spec_mswin32.extensions = []
86
93
  spec_mswin32.require_paths = ['lib', 'ext/mswin32']
87
94
  spec_mswin32.platform = Gem::Platform::WIN32
@@ -99,14 +106,15 @@ end # defined? Gem
99
106
  task :web => [:web_doc] do
100
107
  puts "# Now execute the following:"
101
108
  puts "scp web/* robinstocker@rubyforge.org:/var/www/gforge-projects/id3lib-ruby/"
102
- puts "scp -r web/doc robinstocker@rubyforge.org:/var/www/gforge-projects/id3lib-ruby/doc"
109
+ puts "scp -r web/doc robinstocker@rubyforge.org:/var/www/gforge-projects/id3lib-ruby/"
103
110
  end
104
111
 
105
112
  desc "Generate RDOC documentation on web."
106
113
  Rake::RDocTask.new :web_doc do |rdoc|
107
114
  rdoc.rdoc_dir = 'web/doc'
108
115
  rdoc.title = 'id3lib-ruby'
109
- rdoc.options << '--line-numbers' << '--main' << 'ID3Lib::Tag'
116
+ rdoc.options = RDOC_OPTS.clone
117
+ rdoc.options << '--main' << 'ID3Lib::Tag'
110
118
  rdoc.rdoc_files.include('README', 'TODO', 'CHANGES')
111
119
  rdoc.rdoc_files.include('lib/**/*.rb')
112
120
  end
Binary file
data/lib/id3lib.rb CHANGED
@@ -327,25 +327,26 @@ module ID3Lib
327
327
 
328
328
  def self.read(libframe)
329
329
  frame = {}
330
- info = Info.frame_num(libframe.num)
330
+ info = Info.frame_num(libframe.get_id)
331
331
  frame[:id] = info[ID]
332
- if info[FIELDS].include?(:textenc)
333
- textenc = field(libframe, :textenc).integer
334
- frame[:textenc] = textenc
335
- end
332
+
336
333
  info[FIELDS].each do |field_id|
337
- next if field_id == :textenc
338
334
  libfield = field(libframe, field_id)
339
- frame[field_id] = if textenc and textenc > 0
340
- libfield.unicode
341
- else
342
- case Info::FieldType[libfield.type]
343
- when :integer : libfield.integer
344
- when :binary : libfield.binary
345
- when :text : libfield.ascii
335
+ frame[field_id] =
336
+ case Info::FieldType[libfield.get_type]
337
+ when :integer
338
+ libfield.get_integer
339
+ when :binary
340
+ libfield.get_binary
341
+ when :text
342
+ if libfield.get_encoding > 0
343
+ libfield.get_unicode
344
+ else
345
+ libfield.get_ascii
346
+ end
346
347
  end
347
- end
348
348
  end
349
+
349
350
  frame
350
351
  end
351
352
 
@@ -353,29 +354,35 @@ module ID3Lib
353
354
  if textenc = frame[:textenc]
354
355
  field(libframe, :textenc).set_integer(textenc)
355
356
  end
357
+
356
358
  frame.each do |field_id, value|
357
359
  next if field_id == :textenc
358
360
  unless Info.frame(frame[:id])[FIELDS].include?(field_id)
359
361
  # Ignore invalid fields
360
362
  next
361
363
  end
364
+
362
365
  libfield = field(libframe, field_id)
363
- if textenc and textenc > 0
364
- # Special treatment for Unicode
365
- libfield.set_encoding(textenc)
366
- libfield.set_unicode(value)
367
- else
368
- case Info::FieldType[libfield.type]
369
- when :integer : libfield.set_integer(value)
370
- when :binary : libfield.set_binary(value)
371
- when :text : libfield.set_ascii(value)
366
+ case Info::FieldType[libfield.get_type]
367
+ when :integer
368
+ libfield.set_integer(value)
369
+ when :binary
370
+ libfield.set_binary(value)
371
+ when :text
372
+ if textenc and textenc > 0 and
373
+ [:text, :description, :filename].include?(field_id)
374
+ # Special treatment for Unicode
375
+ libfield.set_encoding(textenc)
376
+ libfield.set_unicode(value)
377
+ else
378
+ libfield.set_ascii(value)
372
379
  end
373
380
  end
374
381
  end
375
382
  end
376
383
 
377
384
  def self.field(libframe, id)
378
- libframe.field(Info.field(id)[NUM])
385
+ libframe.get_field(Info.field(id)[NUM])
379
386
  end
380
387
 
381
388
  end
data/test/test_writing.rb CHANGED
@@ -172,12 +172,19 @@ class TestWriting < Test::Unit::TestCase
172
172
 
173
173
  def test_unicode
174
174
  nihao = "\x4f\x60\x59\x7d"
175
- @tag.reject!{ |f| f[:id] == :TIT2 }
176
- @tag << {:id => :TIT2, :text => nihao, :textenc => 1}
175
+ frame = {
176
+ :id => :COMM,
177
+ :text => nihao,
178
+ :description => nihao,
179
+ :language => "zho",
180
+ :textenc => 1
181
+ }
182
+ @tag.comment = nil
183
+ @tag << frame
177
184
  @tag.update!(ID3Lib::V2)
178
- assert_equal nihao, @tag.title
185
+ assert_equal frame, @tag.frame(:COMM)
179
186
  reload!(ID3Lib::V2)
180
- assert_equal nihao, @tag.title
187
+ assert_equal frame, @tag.frame(:COMM)
181
188
  end
182
189
 
183
190
  def test_unicode_invalid_data
data/usage.rb ADDED
@@ -0,0 +1,40 @@
1
+
2
+ require 'rubygems'
3
+ require 'id3lib'
4
+
5
+ # Load a tag from a file
6
+ tag = ID3Lib::Tag.new('talk.mp3')
7
+
8
+ # Get and set text frames with convenience methods
9
+ tag.title #=> "Talk"
10
+ tag.album = 'X&Y'
11
+ tag.track = '5/13'
12
+
13
+ # Tag is a subclass of Array and each frame is a Hash
14
+ tag[0]
15
+ #=> { :id => :TPE1, :textenc => 0, :text => "Coldplay" }
16
+
17
+ # Get the number of frames
18
+ tag.length #=> 7
19
+
20
+ # Remove all comment frames
21
+ tag.delete_if{ |frame| frame[:id] == :COMM }
22
+
23
+ # Get info about APIC frame to see which fields are allowed
24
+ ID3Lib::Info.frame(:APIC)
25
+ #=> [ 2, :APIC, "Attached picture",
26
+ #=> [:textenc, :mimetype, :picturetype, :description, :data] ]
27
+
28
+ # Add an attached picture frame
29
+ cover = {
30
+ :id => :APIC,
31
+ :mimetype => 'image/jpeg',
32
+ :picturetype => 3,
33
+ :description => 'A pretty picture',
34
+ :textenc => 0,
35
+ :data => File.read('cover.jpg')
36
+ }
37
+ tag << cover
38
+
39
+ # Last but not least, apply changes
40
+ tag.update!
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
2
+ rubygems_version: 0.8.99
3
3
  specification_version: 1
4
4
  name: id3lib-ruby
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.1
7
- date: 2006-06-05 00:00:00 +02:00
6
+ version: 0.4.0
7
+ date: 2006-06-27 00:00:00 +02:00
8
8
  summary: id3lib-ruby provides a Ruby interface to the id3lib C++ library for easily editing ID3 tags (v1 and v2) like with pyid3lib.
9
9
  require_paths:
10
10
  - lib
@@ -26,6 +26,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
26
26
  platform: mswin32
27
27
  signing_key:
28
28
  cert_chain:
29
+ post_install_message:
29
30
  authors:
30
31
  - Robin Stocker
31
32
  files:
@@ -38,6 +39,7 @@ files:
38
39
  - test/data/unicode.mp3
39
40
  - test/data/cover.jpg
40
41
  - Rakefile
42
+ - usage.rb
41
43
  - setup.rb
42
44
  - ext/mswin32/id3lib_api.so
43
45
  - README
@@ -47,6 +49,7 @@ test_files:
47
49
  - test/test_writing.rb
48
50
  - test/test_reading.rb
49
51
  rdoc_options:
52
+ - --inline-source
50
53
  - --line-numbers
51
54
  - --main
52
55
  - README