ruby-mp3info 0.6.3 → 0.6.4
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/History.txt +4 -0
- data/lib/mp3info.rb +2 -2
- data/lib/mp3info/id3v2.rb +8 -35
- metadata +2 -2
data/History.txt
CHANGED
data/lib/mp3info.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: mp3info.rb
|
1
|
+
# $Id: mp3info.rb 77 2008-04-16 20:04:35Z moumar $
|
2
2
|
# License:: Ruby
|
3
3
|
# Author:: Guillaume Pierronnet (mailto:moumar_AT__rubyforge_DOT_org)
|
4
4
|
# Website:: http://ruby-mp3info.rubyforge.org/
|
@@ -17,7 +17,7 @@ end
|
|
17
17
|
|
18
18
|
class Mp3Info
|
19
19
|
|
20
|
-
VERSION = "0.6.
|
20
|
+
VERSION = "0.6.4"
|
21
21
|
|
22
22
|
LAYER = [ nil, 3, 2, 1]
|
23
23
|
BITRATE = [
|
data/lib/mp3info/id3v2.rb
CHANGED
@@ -101,6 +101,8 @@ class ID3v2 < DelegateClass(Hash)
|
|
101
101
|
# for read and write tag2 values.
|
102
102
|
attr_reader :options
|
103
103
|
|
104
|
+
# you can access this object like an hash, with [] and []= methods
|
105
|
+
# special cases are ["disc_number"] and ["disc_total"] mirroring TPOS attribute
|
104
106
|
def initialize(options = {})
|
105
107
|
@options = {
|
106
108
|
:lang => "ENG",
|
@@ -265,44 +267,9 @@ class ID3v2 < DelegateClass(Hash)
|
|
265
267
|
#size = @io.get_syncsafe #this seems to be a bug
|
266
268
|
size = @io.get32bits
|
267
269
|
@io.read(2)
|
268
|
-
=begin
|
269
|
-
size_str = @io.read(4)
|
270
|
-
|
271
|
-
@io.getc #flags part 1
|
272
|
-
# just read the unsync bit
|
273
|
-
b = @io.getc
|
274
|
-
unsync = ((b >> 1) & 1) == 1
|
275
|
-
|
276
|
-
if unsync
|
277
|
-
size = (size_str[0] << 21) + (size_str[1] << 14) + (size_str[2]<< 7) + size_str[3]
|
278
|
-
else
|
279
|
-
size = size_str.unpack("N").first
|
280
|
-
end
|
281
|
-
require "to_b"
|
282
|
-
=end
|
283
270
|
puts "name '#{name}' size #{size}" if $DEBUG
|
284
271
|
#@io.seek(2, IO::SEEK_CUR) # skip flags
|
285
272
|
add_value_to_tag2(name, size)
|
286
|
-
# case name
|
287
|
-
# when /^T/
|
288
|
-
# puts "tag is text. reading" if $DEBUG
|
289
|
-
## data = read_id3_string(size-1)
|
290
|
-
## add_value_to_tag2(name, data)
|
291
|
-
# else
|
292
|
-
# decode_tag(
|
293
|
-
# #@file.seek(size-1, IO::SEEK_CUR)
|
294
|
-
# puts "tag is binary, skipping" if $DEBUG
|
295
|
-
# @io.seek(size, IO::SEEK_CUR)
|
296
|
-
# end
|
297
|
-
|
298
|
-
# case name
|
299
|
-
# #FIXME DRY
|
300
|
-
# when "COMM"
|
301
|
-
# data = read_id3v2_frame(size)
|
302
|
-
# lang = data[0,3]
|
303
|
-
# data = data[3,-1]
|
304
|
-
# else
|
305
|
-
# end
|
306
273
|
end
|
307
274
|
break if @io.pos >= @tag_length # 2. reach length from header
|
308
275
|
end
|
@@ -333,6 +300,12 @@ class ID3v2 < DelegateClass(Hash)
|
|
333
300
|
raise("tag size too big for tag #{name.inspect} unsync #{@unsync} ") if size > 50_000_000
|
334
301
|
data_io = @io.read(size)
|
335
302
|
data = decode_tag(name, data_io)
|
303
|
+
|
304
|
+
if self["TPOS"] =~ /(\d+)\s*\/\s*(\d+)/
|
305
|
+
self["disc_number"] = $1.to_i
|
306
|
+
self["disc_total"] = $2.to_i
|
307
|
+
end
|
308
|
+
|
336
309
|
if self.keys.include?(name)
|
337
310
|
unless self[name].is_a?(Array)
|
338
311
|
self[name] = self[name].to_a
|
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.
|
4
|
+
version: 0.6.4
|
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-
|
12
|
+
date: 2008-04-16 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|