ruby-mp3info 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/History.txt +7 -0
  2. data/lib/mp3info.rb +2 -2
  3. data/lib/mp3info/id3v2.rb +19 -19
  4. metadata +2 -2
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ === 0.6.2 / 2008-03-02
2
+
3
+ * better handling of frames:
4
+ decode and encode as raw string by default,
5
+ or handle charset decoding/encoding for /^T/ and
6
+ COMM frames
7
+
1
8
  === 0.6.1 / 2008-02-28
2
9
 
3
10
  * FIXED: fails to read id3v2 tags when iconv fails
data/lib/mp3info.rb CHANGED
@@ -1,4 +1,4 @@
1
- # $Id: mp3info.rb 69 2008-02-28 09:29:08Z moumar $
1
+ # $Id: mp3info.rb 71 2008-03-02 07:10:26Z moumar $
2
2
  # License:: Ruby
3
3
  # Author:: Guillaume Pierronnet (mailto:moumar_AT__rubyforge_DOT_org)
4
4
  # Website:: http://ruby-mp3info.rubyforge.org/
@@ -18,7 +18,7 @@ end
18
18
 
19
19
  class Mp3Info
20
20
 
21
- VERSION = "0.6.1"
21
+ VERSION = "0.6.2"
22
22
 
23
23
  LAYER = [ nil, 3, 2, 1]
24
24
  BITRATE = [
data/lib/mp3info/id3v2.rb CHANGED
@@ -194,7 +194,7 @@ class ID3v2 < DelegateClass(Hash)
194
194
  puts "encode_tag(#{name.inspect}, #{value.inspect}, #{version})" if $DEBUG
195
195
 
196
196
  text_encoding_index = @text_encoding_index
197
- if version == 3
197
+ if (name[0] == ?T || name == "COMM" ) && version == 3
198
198
  # in id3v2.3 tags, there is only 2 encodings possible
199
199
  transcoded_value = value
200
200
  if text_encoding_index >= 2
@@ -206,38 +206,38 @@ class ID3v2 < DelegateClass(Hash)
206
206
  case name
207
207
  when "COMM"
208
208
  [ text_encoding_index , @options[:lang], 0, transcoded_value ].pack("ca3ca*")
209
- when "UFID", /^W/ # URL link frames
210
- value
211
- else
209
+ when /^T/
212
210
  text_encoding_index.chr + transcoded_value
211
+ else
212
+ value
213
213
  end
214
214
  end
215
215
 
216
216
  ### Read a tag from file and perform UNICODE translation if needed
217
217
  def decode_tag(name, value)
218
+ puts("decode_tag(#{name.inspect}, #{value.inspect})") if $DEBUG
218
219
  case name
219
220
  when "COMM"
220
221
  #FIXME improve this
221
222
  encoding, lang, str = value.unpack("ca3a*")
222
223
  out = value.split(0.chr).last
223
- when "UFID", /^W/ # URL link frames
224
- out = value
225
- else
224
+ when /^T/
226
225
  encoding = value[0] # language encoding (see TEXT_ENCODINGS constant)
227
226
  out = value[1..-1]
227
+ # we need to convert the string in order to match
228
+ # the requested encoding
229
+ if encoding != @text_encoding_index
230
+ begin
231
+ Iconv.iconv(@options[:encoding], TEXT_ENCODINGS[encoding], out)[0]
232
+ rescue Iconv::Failure
233
+ out
234
+ end
235
+ else
236
+ out
237
+ end
238
+ else
239
+ value
228
240
  end
229
-
230
- printf("encoding: %d, value: %s\n", encoding, value.inspect) if $DEBUG
231
- # we need to convert the string in order to match
232
- # the requested encoding
233
- if encoding && encoding != @text_encoding_index
234
- begin
235
- return Iconv.iconv(@options[:encoding], TEXT_ENCODINGS[encoding], out)[0]
236
- rescue Iconv::Failure
237
- return out
238
- end
239
- end
240
- out
241
241
  end
242
242
 
243
243
  ### reads id3 ver 2.3.x/2.4.x frames and adds the contents to @tag2 hash
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-mp3info
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillaume Pierronnet
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-28 00:00:00 +01:00
12
+ date: 2008-03-02 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency